PySpark для блоков данных: чтение файла CSV, скопированного из хранилища BLOB-объектов Azure, приводит к исключению java.io.FileNotFoundException - PullRequest
0 голосов
/ 28 января 2019

Я использую Azure Databricks 4.3 (включая Apache Spark 2.3.1, Scala 2.11).

Я скопировал CSV файл из хранилища BLOB-объектов Azure в кластер 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>

Когда я монтирую контейнер хранилища BLOB-объектов Azure, как описано ниже, тогда я могу правильно прочитать файл с помощью Spark, используя тот же фрагмент кода выше, используяабсолютный local_path файла в смонтированном каталоге:

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

Можно ли вообще прочитать файл CSV, который был скопирован из хранилища BLOB-объектов Azure, илирешение, использующее установку контейнера хранилища BLOB-объектов Azure, в любом случае предпочтительнее?

1 Ответ

0 голосов
/ 28 января 2019

Я не уверен, что файл: будет сопоставляться с.

Я бы ожидал, что путь будет путь DBFS:

copy_to = "/path/file.csv"

Это будет принято к DBFSпуть.

Вы всегда можете сделать:

dbutils.fs.ls("/path")

Чтобы проверить копию файла.

Хотя обратите внимание, что вам не нужно копировать файл в DBFS для загрузки вфрейм данных - вы можете читать прямо из учетной записи хранилища BLOB-объектов.Это был бы нормальный подход.Есть ли причина, по которой вы хотите скопировать его локально?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...