簡體   English   中英

將 Spark Dataframe (pyspark.pandas.Dataframe) 從 Z3A580F142203676F53F 文件導出到 Excel 文件

[英]Export a Spark Dataframe (pyspark.pandas.Dataframe) to Excel file from Azure DataBricks

我正在努力將 pyspark.pandas.Dataframe 導出到 ZC1D81AF5831044B4EZDED86 文件。

我正在使用 Pyspark 開發 Azure Databricks Notebook。 我的目標是從 Azure Data Lake Storage 容器中讀取 csv 文件,並將其作為 Excel 文件存儲在另一個 ADLS 容器中。

我發現很多與表演和方法有關的困難。 pyspark.pandas.Dataframe 有一個內置的to_excel方法,但是對於大於 50MB 的文件,命令在 1 小時后以超時錯誤結束。

您可以在下面找到代碼示例。 它通過將文件保存在 DBFS 上結束(將 to_excel 方法與 Azure 集成仍然存在問題),然后我將文件移動到 ADLS。

import pyspark.pandas as ps
spark.conf.set(f"fs.azure.account.key.{storage_account_name}.dfs.core.windows.net", storage_account_key)

reference_path = f'abfss://{source_container_nae}@{storage_account_name}.dfs.core.windows.net/{file_name}'

df = ps.read_csv(reference_path, index=None)

df.to_excel(file_name, sheet_name='sheet')

pyspark.pandas.Dataframe is the suggested method by Databricks in order to work with Dataframes (it replaces koalas) but I can't find any solution to my problem, except converting the dataframe to a normal pandas one.

可以請人幫助我嗎?

提前致謝!

更新

整個管道的更多信息。

我有一個 DataFactory 管道,它從 Azure Synapse 讀取數據,詳細說明它們並將它們存儲為 ADLS 中的 csv 文件。 我需要 DataBricks,因為 DataFactory 沒有本機接收器 Excel 連接器,我知道我可以使用 Azure 函數或 Kubernetes 代替。 但我開始使用 DataBricks 希望它是可能的......

嗯..看起來您正在讀取同一個文件並保存到同一個文件。

你能改變嗎

df.to_excel(file_name, sheet_name='sheet')

df.to_excel("anotherfilename.xlsx", sheet_name='sheet')

我找到了 pyexcelerate package 問題的解決方案:

from pyexcelerate import Workbook

df = # read your dataframe

values = df.columns.to_list() + list(df.values)
sheet_name = 'Sheet'

wb = Workbook()
wb.new_sheet(sheet_name, data=values)
wb.save(file_name)

通過這種方式,Databricks 在 3 分鍾內成功構建了 160MB 數據集並導出到 Excel。

如果您找到更好的解決方案,請告訴我!

您不應該將大火花 dataframe 轉換為 pandas,因為您可能無法分配這么多 memory。 您可以將其寫為 csv 並且可以在 excel 中打開:

df.to_csv(path=file_name, num_files=1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM