Как прочитать CSV-файл из «общего файлового ресурса» в ADLS Gen2 Datalake внутри Databricks с помощью pyspark - PullRequest
0 голосов
/ 30 марта 2020

У меня есть ADLS Gen2 Datalake с «контейнерами BLOB-объектов» и «общими файлами». Я установил контейнеры Blob в свою записную книжку Databricks, так что я могу читать все, что находится внутри моих записных книжек Databricks.

У меня также есть несколько файлов в «Файловом ресурсе», но я не могу прочитать эти файлы в блоке данных с помощью pyspark.

Я создал подпись доступа для общего файлового ресурса и получил URL-адрес для одного из файлов внутри общего ресурса. Этот URL-адрес отлично работает через Почтальон. Я могу загрузить этот файл, используя URL-адрес.

Пример URL-адреса показан ниже:

https://somedatalakename.file.core.windows.net/file_share_name/Data_20200330_1030.csv?sv=yyyy-mm-dd&si=somename&sr=s&sig=somerandomsignature%3D

Как прочитать тот же CSV, который находится внутри этого общего файла, в кадре данных через блоки данных используя pyspark?

Я также пытался

from pyspark import SparkFiles
spark.sparkContext.addFile(uri)
call_df = spark.read.format("csv").option("header", "true").load("file://" + SparkFiles.get("Data_" + date_str + "_1030.csv"))

И я получаю следующую ошибку:

org.apache.spark.sql.AnalysisException: Path does not exist: file:/local_disk0/spark-ce42ed1b-5d82-4559-9000-d1bf3621539e/userFiles-eaf0fd36-68aa-409e-8610-a7909635b006/Data_20200330_1030.csv

Пожалуйста, дайте мне несколько советов о том, как решить эту проблему. Благодаря.

1 Ответ

0 голосов
/ 30 марта 2020

Проблема с вашим синтаксисом загрузки. file: не работает в Databricks, поэтому вам нужно заменить его на dbfs т.е. файловую систему Databricks. Команда для загрузки файла:

spark.read.format("csv").option("header","true").load(f"dbfs:/path/to/your/directory/FileName.csv")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...