我从“adls”原始容器中读取文件,并执行某些操作来检查空值,重命名列并向文件添加一个附加列。
完成所有这些操作后,我将文件写入 adls 容器。我用read命令回来检查文件是否写入成功。该命令已显示表中的值,但是,当我检查 adls 容器时,它说找不到文件。
想知道为什么同样的事情在 Databricks 中是正确的,但在 ADLS 中找不到它。
我已经检查了所有权限和安装部件。
我使用了服务主体、azure key Vault,创建了秘密范围并将 adls 连接到 Databricks。
允许的应用程序注册以及角色分配下具有“存储 blob 贡献者”角色的 adls 帐户。
我能够使用数据块成功读取文件并写入文件。但是,在adls容器中看不到该文件。
您可以使用下面的代码列出挂载点中的所有文件
files = dbutils.fs.ls("/mnt/new_mount_point/")
for file in files:
print(file.path)
dbfs:/mnt/new_mount_point/d01/ dbfs:/mnt/new_mount_point/processed_data/
正如您所提到的,您可以使用 databricks 中的挂载脚本读取和写入文件。
写入 ADLS 的输入时
您可以尝试以下方法:
output_path = "dbfs:/mnt/new_mount_point/d02/processed_data"
df.write.mode("overwrite").option("header", "true").csv(output_path)
files = dbutils.fs.ls(output_path)
if files:
print(f"Files written to {output_path}:")
for file in files:
print(file.path)
else:
print(f"No files found in {output_path}. Please check the output path and permissions.")
结果:
Files written to dbfs:/mnt/new_mount_point/d02/processed_data:
dbfs:/mnt/new_mount_point/d02/processed_data/_SUCCESS
dbfs:/mnt/new_mount_point/d02/processed_data/_committed_2200847103700868366
dbfs:/mnt/new_mount_point/d02/processed_data/_started_2200847103700868366
dbfs:/mnt/new_mount_point/d02/processed_data/part-00000-tid-2200847103700868366-a0c52993-d780-491a-a451-db0a3716efe0-24-1-c000.csv