0

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

我通过添加绝对值将CSV文件从 Azure Blob 存储复制到 Databricks 集群中,并使用dbutils.fs.cp到磁盘中: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 正确读取文件:

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

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

4

1 回答 1

1

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

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

copy_to = "/path/file.csv"

这将假定为 DBFS 路径。

你总是可以这样做:

dbutils.fs.ls("/path")

验证文件副本。

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

于 2019-01-28T16:40:27.827 回答