能够从数据块将文件写入adls处理的容器,但无法在adls容器中看到文件

问题描述 投票:0回答:1

我从“adls”原始容器中读取文件,并执行某些操作来检查空值,重命名列并向文件添加一个附加列。

完成所有这些操作后,我将文件写入 adls 容器。我用read命令回来检查文件是否写入成功。该命令已显示表中的值,但是,当我检查 adls 容器时,它说找不到文件。

想知道为什么同样的事情在 Databricks 中是正确的,但在 ADLS 中找不到它。

我已经检查了所有权限和安装部件。

我使用了服务主体、azure key Vault,创建了秘密范围并将 adls 连接到 Databricks。

允许的应用程序注册以及角色分配下具有“存储 blob 贡献者”角色的 adls 帐户。

我能够使用数据块成功读取文件并写入文件。但是,在adls容器中看不到该文件。

azure-active-directory azure-blob-storage azure-databricks azure-data-lake-gen2 azure-service-principal
1个回答
0
投票

您可以使用下面的代码列出挂载点中的所有文件

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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.