簡體   English   中英

Databricks - pyspark.pandas.Dataframe.to_excel 不識別 abfss 協議

[英]Databricks - pyspark.pandas.Dataframe.to_excel does not recognize abfss protocol

I want to save a Dataframe (pyspark.pandas.Dataframe) as an Excel file on the Azure Data Lake Gen2 using Azure Databricks in Python. I've switched to the pyspark.pandas.Dataframe because it is the recommended one since Spark 3.2.

有一種名為 to_excel( 此處為文檔)的方法允許將文件保存到 ADL 中的容器中,但我遇到了文件系統訪問協議的問題。 從同一個 class 我使用方法 to_csv 和 to_parquet 使用 abfss 我想對 excel 使用相同的方法。

所以當我嘗試使用以下方法保存它時:

import pyspark.pandas as ps
# Omit the df initialization
file_name = "abfss://CONTAINER@SERVICEACCOUNT.dfs.core.windows.net/FILE.xlsx"
sheet = "test"
df.to_excel(file_name, test)

我從 fsspec 得到錯誤:

ValueError: Protocol not known: abfss

有人可以幫幫我嗎?

提前致謝!

pandas 數據框不支持該協議。 在 Databricks 上,您似乎只能通過 Spark 數據幀訪問和寫入 abfss 上的文件。 所以,解決辦法是在本地寫文件,手動移到abfss。 在這里看到這個答案。

您不能直接保存它,但可以將其存儲在臨時位置並將其移動到您的目錄中。 我的代碼是:

import xlsxwriter import pandas as pd1 

workbook = xlsxwriter.Workbook('data_checks_output.xlsx') 

worksheet = workbook.add_worksheet('top_rows') 

使用 XlsxWriter 作為引擎創建一個 Pandas Excel 編寫器。

writer = pd1.ExcelWriter('data_checks_output.xlsx', engine='xlsxwriter') 

output = dataset.limit(10) 
output = output.toPandas() 
output.to_excel(writer, sheet_name='top_rows',startrow=row_number)

writer.save()

寫入后保存

運行下面的代碼,這只不過是將文件的臨時位置移動到您指定的位置。

下面的代碼完成了移動文件的工作。

%sh
sudo mv file_name.xlsx /dbfs/mnt/fpmount/

暫無
暫無

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

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