#pyspark #azure-storage #unzip #zipfile #azure-databricks
Вопрос:
Я хочу прочитать zip-файлы, содержащие csv-файлы. Я перепробовал много способов, но мне это не удалось. В моем случае путь, по которому я должен прочитать файл, находится в проводнике хранилища Azure.
Например, когда мне нужно прочитать csv в базах данных, я использую следующий код:
dfDemandaBilletesCmbinad = spark.read.csv("/mnt/data/myCSVfile.csv", header=True)
Итак, мне нужен путь к хранилищу Azure "/mnt/data/myZipFile.zip"
, внутри которого у меня есть несколько csv-файлов.
Можно ли читать csv-файлы, поступающие из хранилища Azure, через PySpark в блоках данных?
Ответ №1:
Я думаю, что единственный способ сделать это-использовать Pandas, библиотеку openpyxl и zip для python, так как для PySpark нет подобной библиотеки.
import pandas as pd
import openpyxl, zipfile
#Unzip and extract in file. Maybe, could be better to unzip in memory with StringIO.
with zipfile.ZipFile('/dbfs/mnt/data/file.zip', 'r') as zip_ref:
zip_ref.extractall('/dbfs/mnt/data/unzipped')
#read excel
my_excel = openpyxl.load_workbook('/dbfs/mnt/data/unzipped/file.xlsx')
ws = my_excel['worksheet1']
# create pandas dataframe
df = pd.DataFrame(ws.values)
# create spark dataframe
spark_df = spark.createDataFrame(df)
Проблема в том, что это выполняется только в виртуальной машине драйвера кластера.
Ответ №2:
Пожалуйста, имейте в виду, что обозреватель хранилища Azure не хранит никаких данных. Это инструмент, который позволяет вам получить доступ к вашей учетной записи хранилища Azure с любого устройства и на любой платформе. Данные всегда хранятся в учетной записи хранилища Azure.
В вашем сценарии создается впечатление, что ваша учетная запись хранилища Azure уже подключена к пути к файлу DBFS Databricks. Поскольку он смонтирован, вы можете использовать команду spark.read для доступа к файлу непосредственно из учетной записи хранилища Azure
Пример df = spark.read.text(«dbfs:/mymount/my_file.txt»)
Ссылка: https://docs.databricks.com/data/databricks-file-system.html
и что касается ZIP-файла, пожалуйста, обратитесь
https://docs.microsoft.com/en-us/azure/databricks/_static/notebooks/zip-files-python.html