Databricks社区版中Spark可读文件但Pandas报FileNotFoundError的问题
问题原因
Databricks中的/FileStore/tables/是DBFS(Databricks文件系统)的路径,Spark原生支持直接访问DBFS路径,所以能正常读取文件。但Pandas是运行在Driver节点的本地文件系统环境中,它无法直接识别DBFS的路径,因此会抛出文件不存在的错误。
解决办法
方法1:使用DBFS的本地挂载路径
Databricks默认将DBFS挂载到Driver节点的/dbfs目录下,只需在原路径前加上/dbfs前缀,Pandas就能识别:
import pandas as pd df_ge = pd.read_csv("/dbfs/FileStore/tables/ge_selection.csv")
方法2:从Spark DataFrame转换为Pandas DataFrame
既然Spark已经能成功读取文件,直接将Spark DataFrame转换为Pandas DataFrame是更高效的方式(尤其适合大文件场景):
# 先通过Spark读取数据 file_location = "/FileStore/tables/ge_selection.csv" df = spark.read.csv(file_location, inferSchema=False, header=False, sep=",") # 转换为Pandas DataFrame df_ge = df.toPandas()
方法3:复制DBFS文件到Driver本地目录
如果需要在本地文件系统中操作该文件,可以用dbutils工具将DBFS上的文件复制到Driver的临时目录,再用Pandas读取:
# 复制DBFS文件到本地临时目录 dbutils.fs.cp("dbfs:/FileStore/tables/ge_selection.csv", "file:/tmp/ge_selection.csv") # Pandas读取本地文件 df_ge = pd.read_csv("/tmp/ge_selection.csv")
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

