分析异常:路径不存在:dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data;

AnalysisException: Path does not exist: dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data;(分析异常:路径不存在:dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data;)
本文介绍了分析异常:路径不存在: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文件正确地包含了sampleFold/data/目录下的拼图文件。当我在本地运行此程序时,它可以工作,但当我将此WHL文件上载到dBFS并运行时,我收到以下错误:

AnalysisException: Path does not exist: dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data;
我确认此目录实际上并不存在:dBFS:/Databricks/python 知道这个错误可能是什么吗?

谢谢。

推荐答案

默认情况下,数据库上的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))

这篇关于分析异常:路径不存在:dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Leetcode 234: Palindrome LinkedList(Leetcode 234:回文链接列表)
How do I read an Excel file directly from Dropbox#39;s API using pandas.read_excel()?(如何使用PANDAS.READ_EXCEL()直接从Dropbox的API读取Excel文件?)
subprocess.Popen tries to write to nonexistent pipe(子进程。打开尝试写入不存在的管道)
I want to realize Popen-code from Windows to Linux:(我想实现从Windows到Linux的POpen-code:)
Reading stdout from a subprocess in real time(实时读取子进程中的标准输出)
How to call type safely on a random file in Python?(如何在Python中安全地调用随机文件上的类型?)