Databricks 上的 PySpark:读取从 Azure Blob 存储复制的 CSV 文件导致 java.io.FileNotFoundException
PySpark on Databricks: Reading a CSV file copied from the Azure Blob Storage results in java.io.FileNotFoundException
我是 运行 Azure Databricks 4.3(包括 Apache Spark 2.3.1、Scala 2.11)。
我使用 dbutils.fs.cp
将 CSV
文件从 Azure Blob 存储复制到 Databricks 集群中,方法是将 file:
添加到绝对 local_path
:
copy_to = "file:" + local_path
dbutils.fs.cp(blob_storage_path, copy_to)
然后当我尝试使用前面添加 file:
的相同路径读取文件时:
csv_spark_df = sqlContext.read.format('csv').options(header='true', inferSchema='true').load(copy_to)
我收到一条错误消息,指出给定路径不存在:
java.io.FileNotFoundException: File file:/<local_path>
当我安装 Azure Blob 存储容器时,如下所述,然后我可以使用上面相同的代码段使用安装目录中文件的绝对 local_path
使用 Spark 正确读取文件:
是否可以读取从 Azure Blob 存储复制的 CSV
文件,或者使用安装 Azure Blob 存储容器的解决方案是否是首选方案?
我不确定文件:将映射到什么。
我本以为路径是 DBFS 路径:
copy_to = "/path/file.csv"
这将假定为 DBFS 路径。
你总是可以这样做:
dbutils.fs.ls("/path")
验证文件副本。
但请注意,您无需将文件复制到 DBFS 即可加载到数据帧中 - 您可以直接从 blob 存储帐户读取。这将是正常的做法。您是否有理由要将其复制到本地?
我是 运行 Azure Databricks 4.3(包括 Apache Spark 2.3.1、Scala 2.11)。
我使用 dbutils.fs.cp
将 CSV
文件从 Azure Blob 存储复制到 Databricks 集群中,方法是将 file:
添加到绝对 local_path
:
copy_to = "file:" + local_path
dbutils.fs.cp(blob_storage_path, copy_to)
然后当我尝试使用前面添加 file:
的相同路径读取文件时:
csv_spark_df = sqlContext.read.format('csv').options(header='true', inferSchema='true').load(copy_to)
我收到一条错误消息,指出给定路径不存在:
java.io.FileNotFoundException: File file:/<local_path>
当我安装 Azure Blob 存储容器时,如下所述,然后我可以使用上面相同的代码段使用安装目录中文件的绝对 local_path
使用 Spark 正确读取文件:
是否可以读取从 Azure Blob 存储复制的 CSV
文件,或者使用安装 Azure Blob 存储容器的解决方案是否是首选方案?
我不确定文件:将映射到什么。
我本以为路径是 DBFS 路径:
copy_to = "/path/file.csv"
这将假定为 DBFS 路径。
你总是可以这样做:
dbutils.fs.ls("/path")
验证文件副本。
但请注意,您无需将文件复制到 DBFS 即可加载到数据帧中 - 您可以直接从 blob 存储帐户读取。这将是正常的做法。您是否有理由要将其复制到本地?