Databricks 上的 PySpark:读取从 Azure Blob 存储复制的 CSV 文件会导致 java.io



我正在运行Azure Databricks 4.3(包括Apache Spark 2.3.1,Scala 2.11)。

我通过将file:添加到绝对local_path,使用dbutils.fs.cpCSV文件从 Azure Blob 存储复制到 Databricks 群集中:

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 正确读取文件:

https://docs.databricks.com/spark/latest/data-sources/azure/azure-storage.html#mount-azure-blob-storage-containers-with-dbfs

是否可以读取从 Azure Blob 存储复制的CSV文件,或者使用装载 Azure Blob 存储容器的解决方案是否是首选解决方案?

我不确定文件:将映射到什么。

我本来希望该路径是DBFS路径:

copy_to = "/path/file.csv"

这将假定为 DBFS 路径。

您始终可以执行以下操作:

dbutils.fs.ls("/path")

验证文件副本。

但请注意,无需将文件复制到 DBFS 即可加载到数据帧中 - 可以直接从 Blob 存储帐户读取。这将是正常的做法。是否有理由要在本地复制它?

最新更新