从 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>
我最近开始使用 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>