从 Databricks DBFS 读取多个文件

Read multiple files from Databricks DBFS

我最近开始使用 Databricks python 笔记本,无法理解如何像我之前在 Jupyter 笔记本中那样从 DBFS 读取多个 .csv 文件。

我试过:

path = r'dbfs:/FileStore/shared_uploads/path/' 
all_files = glob.glob(path + "/*.csv")
li = []
for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0, low_memory=False)
    li.append(df)

data = pd.concat(li, axis=0, ignore_index=True)

此代码在 Jupyter notebook 中完美运行,但在 Databricks 中,我收到此错误: ValueError: No objects to concatenate

我可以使用 df = pd.read_csv('dbfs_path/filename.csv')

到达此路径中的一个文件

谢谢!

您需要将 path 更改为 r'/dbfs/FileStore/shared_uploads/path/'

glob 函数将使用附加到驱动程序的原始文件系统,并且不知道 dbfs: 是什么意思。

此外,既然你合并了很多 csv 文件,为什么不直接用 spark 读取它们:

path = r'dbfs:/FileStore/shared_uploads/path/*.csv' 
df = spark.read.csv(path)

当您读取 DBFS 位置时,我们应该像这样读取 dbutils 命令。

files = dbutils.fs.ls('/FileStore/shared_uploads/path/')
li = []
for fi in files: 
  print(fi.path)
  <your logic here>