如何解决AnalysisException:路径不存在:dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data;
我将以下代码打包到 whl 文件中:
from pkg_resources import resource_filename
def path_to_model(anomaly_dir_name: str,data_path: str):
filepath = resource_filename(anomaly_dir_name,data_path)
return filepath
def read_data(spark) -> DataFrame:
return (spark.read.parquet(str(path_to_model("sampleFolder","data"))))
我确认 whl 文件正确包含了 sampleFolder/data/ 目录下的 parquet 文件。当我在本地运行它时,它可以工作,但是当我将此 whl 文件上传到 dbfs 并运行时,我收到此错误:
AnalysisException: Path does not exist: dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data;
我确认这个目录实际上不存在:dbfs:/databricks/python 知道这个错误是什么吗?
谢谢。
解决方法
默认情况下,Databricks 上的 Spark 使用 DBFS 上的文件,直到您明确更改架构。在您的情况下,path_to_model
函数返回字符串 /databricks/python/lib/python3.7/site-packages/sampleFolder/data
,并且由于它没有显式架构,因此 Spark 使用 dbfs
架构。但是文件在本地节点上,而不是在 DBFS 上——这就是 Spark 找不到它的原因。
要解决这个问题,您需要将数据复制到 DBFS,然后从那里读取。这可以通过 dbutils.fs.cp
命令完成。将代码更改为以下内容:
def read_data(spark) -> DataFrame:
data_path = str(path_to_model("sampleFolder","data"))
tmp_path = "/tmp/my_sample_data"
dbutils.fs.cp("file:" + data_path,tmp_path,True)
return (spark.read.parquet(tmp_path))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。