我需要将文件从一个S3桶目录移动到另外两个桶目录。我必须在Databricks笔记本上做这个。如果文件有json扩展名,我将移到jsonDir。否则,我将移到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
以/
字符结尾。