Azure Databricks 创建的 Azure ADLS Gen2 文件不继承 ACL
Azure ADLS Gen2 file created by Azure Databricks doesn't inherit ACL
我有一个正在将数据帧写入 ADLS Gen2 存储中的文件的数据块笔记本。
它创建一个临时文件夹,输出文件,然后将该文件复制到一个永久文件夹。由于某种原因,该文件没有正确继承 ACL。它创建的文件夹具有正确的 ACL。
笔记本代码:
#Get data into dataframe
df_export = spark.sql(SQL)
# OUTPUT file to temp directory coalesce(1) creates a single output data file
(df_export.coalesce(1).write.format("parquet")
.mode("overwrite")
.save(TempFolder))
#get the parquet file name. It's always the last in the folder as the other files are created starting with _
file = dbutils.fs.ls(TempFolder)[-1][0]
#create permanent copy
dbutils.fs.cp(file,FullPath)
创建的临时文件夹显示相关帐户的以下内容。
文件显示以下内容。
还有面具。我不太熟悉面具,所以不确定这有什么不同。
文件夹的掩码权限显示
在文件中显示为
有谁知道为什么这不会从父文件夹继承 ACL?
我已收到 Microsoft 支持部门的回复,为我解决了这个问题。
原因:Databricks 存储的文件将服务主体作为具有权限 -rw-r--r-- 的文件的所有者,因此强制 ADLS 中其余批处理用户的有效权限从 rwx(目录权限)到r-- 这反过来会导致作业失败
解决方案:要解决此问题,我们需要将 Databricks 端的默认掩码 (022) 更改为自定义掩码 (000)。您可以在集群配置下的 Spark 配置设置中设置以下内容:spark.hadoop.fs.permissions.umask-mode 000
哇,太棒了!我正在寻找解决方案。直通身份验证现在可能是一个合适的解决方案。
我觉得这是这个古老的 hadoop 错误的一部分:
https://issues.apache.org/jira/browse/HDFS-6962(在 hadoop-3 中解决,现在是 spark 3+ 的一部分)。
Spark 尝试在移动文件后设置 ACL,但失败了。首先,文件是在 tmp 目录中的其他地方创建的。 tmp-dir 权限默认继承 adls-behaviour。
我有一个正在将数据帧写入 ADLS Gen2 存储中的文件的数据块笔记本。
它创建一个临时文件夹,输出文件,然后将该文件复制到一个永久文件夹。由于某种原因,该文件没有正确继承 ACL。它创建的文件夹具有正确的 ACL。
笔记本代码:
#Get data into dataframe
df_export = spark.sql(SQL)
# OUTPUT file to temp directory coalesce(1) creates a single output data file
(df_export.coalesce(1).write.format("parquet")
.mode("overwrite")
.save(TempFolder))
#get the parquet file name. It's always the last in the folder as the other files are created starting with _
file = dbutils.fs.ls(TempFolder)[-1][0]
#create permanent copy
dbutils.fs.cp(file,FullPath)
创建的临时文件夹显示相关帐户的以下内容。
文件显示以下内容。
还有面具。我不太熟悉面具,所以不确定这有什么不同。
文件夹的掩码权限显示
在文件中显示为
有谁知道为什么这不会从父文件夹继承 ACL?
我已收到 Microsoft 支持部门的回复,为我解决了这个问题。
原因:Databricks 存储的文件将服务主体作为具有权限 -rw-r--r-- 的文件的所有者,因此强制 ADLS 中其余批处理用户的有效权限从 rwx(目录权限)到r-- 这反过来会导致作业失败
解决方案:要解决此问题,我们需要将 Databricks 端的默认掩码 (022) 更改为自定义掩码 (000)。您可以在集群配置下的 Spark 配置设置中设置以下内容:spark.hadoop.fs.permissions.umask-mode 000
哇,太棒了!我正在寻找解决方案。直通身份验证现在可能是一个合适的解决方案。
我觉得这是这个古老的 hadoop 错误的一部分: https://issues.apache.org/jira/browse/HDFS-6962(在 hadoop-3 中解决,现在是 spark 3+ 的一部分)。
Spark 尝试在移动文件后设置 ACL,但失败了。首先,文件是在 tmp 目录中的其他地方创建的。 tmp-dir 权限默认继承 adls-behaviour。