【问题标题】:How to get list of parquet file names from a directory in Azure datalake in pyspark?如何从 pyspark 的 Azure datalake 中的目录中获取镶木地板文件名列表?
【发布时间】:2022-10-20 19:23:22
【问题描述】:

我想从 Pyspark 的 Azure datalake 中的目录中获取所有 parquet 文件名的列表。 以“part-”开头的长文件名

如何做到这一点?

【问题讨论】:

  • 您好@Sparc,您可以使用 os 库,例如:files = os.listdir(path),其中 path :包含 parquets 文件的文件夹的路径。在文件中,您将列出所有文件,之后您可以通过仅保留以“部分”开头的文件来过滤列表
  • 嗨@MerciDieuKIMPOLO,它给了我错误,因为没有这样的文件或目录。我该如何解决这个问题?
  • 嗨@samkart,这不起作用。我想使用 Pyspark 从 Azure synapse notebook 运行代码,以从文件位于 datalake 的目录中获取 parquet 文件的名称。
  • 请添加平台标签以便更好地覆盖和理解
  • 嗨@samkart,抱歉。我现在做了标记。请您给点建议。谢谢

标签: azure pyspark parquet data-lake


【解决方案1】:

我复制了这个并得到了以下结果。

这些是我在 ADLS 容器中的镶木地板文件。

首先在突触中获取这些文件使用 ADLS 链接服务将 ADLS 挂载到突触.

挂载后,使用以下代码获取以part 开头的拼花文件。

files_list=mssparkutils.fs.ls("abfss://<container_name>@<storageaccount_name>.dfs.core.windows.net/")
print("Total files list : ",files_list)
flist=[]
for i in  range(0,len(files_list)):
    if(files_list[i].name.startswith('part')):
        flist.append(files_list[i].path)
print("
  
 File paths that starts with part",flist)

我的执行供您参考:

如果你想读取所有文件,你可以像这样在文件路径中使用通配符路径part*

df=spark.read.parquet("abfss://<container_name><storageaccount_name>.dfs.core.windows.net/part*.parquet")

【讨论】:

    猜你喜欢
    • 2016-09-12
    • 2021-06-22
    • 2016-02-26
    • 1970-01-01
    • 2022-06-16
    • 2021-11-10
    • 2018-08-13
    • 1970-01-01
    相关资源
    最近更新 更多