数据块-pyspark.pandas.Dataframe.to_excel无法识别abfss协议

nwsw7zdq  于 2023-08-01  发布在  Spark
关注(0)|答案(3)|浏览(266)

我想在Azure Data Lake Gen 2上使用Python中的Azure Databricks将Dataframe(pyspark.pandas.Dataframe)保存为Excel文件。我已经切换到pyspark.pandas.Dataframe,因为它是自Spark3.2以来推荐的一个。
有一个名为to_excel的方法(here的doc),它允许将文件保存到ADL中的容器中,但我遇到了文件系统访问协议的问题。在同一个类中,我使用abfss使用方法to_csv和to_parquet,我想在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


有人能帮帮我吗
提前感谢!

ddhy6vgd

ddhy6vgd1#

panda数据框不支援此通信协定。在数据块上,您似乎只能通过Spark数据框访问和写入abfss上的文件。因此,解决方案是在本地写入文件,然后手动移动到abfss。见此答案here

ocebsuys

ocebsuys2#

你不能直接保存它,但你可以有它作为它的临时位置,并移动到你的目录。我的代码是:

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()


write.save之后
运行下面的代码,这是什么,但移动临时位置的文件到您的指定位置。
下面的代码做移动文件的工作。

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

axr492tv

axr492tv3#

试着用“abfs://”代替“abfss://”-对我来说很有效。请参阅here了解更多信息。

相关问题