如何使用 pyspark and/or databricks utils 在 S3 目录中创建文件名列表
How to Create list of filenames in an S3 directory using pyspark and/or databricks utils
我需要将文件从一个 S3 存储桶目录移动到另外两个。我必须从 Databricks 笔记本上执行此操作。如果文件有 json 扩展名,我将移动到 json 目录。否则,我将移动到 otherDir。大概我会用 pyspark 和 databrick utils (dbutils) 来做到这一点。
我不知道 S3 存储桶的名称,只知道它的相对路径(称之为 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”中。我将不胜感激任何想法。谢谢
我认为如果您进行这些小的更改,您的代码就会运行:
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。
jsonDir
和 otherDir
以 /
字符结尾很重要。
我需要将文件从一个 S3 存储桶目录移动到另外两个。我必须从 Databricks 笔记本上执行此操作。如果文件有 json 扩展名,我将移动到 json 目录。否则,我将移动到 otherDir。大概我会用 pyspark 和 databrick utils (dbutils) 来做到这一点。
我不知道 S3 存储桶的名称,只知道它的相对路径(称之为 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”中。我将不胜感激任何想法。谢谢
我认为如果您进行这些小的更改,您的代码就会运行:
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。
jsonDir
和 otherDir
以 /
字符结尾很重要。