如何使用pyspark和/或databricks utils在S3目录中创建文件名列表

2024-04-23 06:46:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将文件从一个S3 bucket目录移动到另外两个。我必须在Databricks笔记本上完成这项工作。如果文件有json扩展名,我将进入jsonDir。否则,我将进入otherDir。大概我会用pyspark和databrickutils(dbutils)来实现这一点

我不知道S3 bucket的名称,只知道它的相对路径(称为MYPATH)。例如,我可以做:

dbutils.fs.ls(MYPATH)

它列出了S3目录中的所有文件。不幸的是,使用dbutils,您可以一次移动一个文件或移动所有文件(无通配符)。我的大部分课程是:

for file in fileList:
  if file.endswith("json"):
    dbutils.fs.mv(file, jsonDir)
    continue
  if not file.endswith("json")
    dbutils.fs.mv(file, otherDir)
    continue

我的问题是:我不知道如何从MYPATH中检索文件列表以将它们放入数组“fileList”。如有任何意见,我将不胜感激。谢谢


Tags: 文件目录jsonifs3bucketfsfile
1条回答
网友
1楼 · 发布于 2024-04-23 06:46:44

我认为,如果您进行以下细微更改,您的代码将运行:

fileList = dbutils.fs.ls(MYPATH)
for file in fileList:
  if file.name.endswith("/"): # Don't copy dirs
    continue
  if file.name.endswith("json"):
    dbutils.fs.mv(file.path, jsonDir + file.name)
    continue
  if not file.name.endswith("json"):
    dbutils.fs.mv(file.path, otherDir + file.name)
    continue

这里,附加了file.name以将文件名保留在新目录中。我需要一个Azure dbfs支持的存储,否则所有东西都会移动到同一个blob。 重要的是jsonDirotherDir/字符结尾

相关问题 更多 >