我想使用Python中的Azure Database ricks将数据框(pyspark. pandas.Dataframe)保存为Azure Data Lake Gen2上的Excel文件。我已切换到pyspark.pandas.Dataframe,因为它是自Spark 3.2以来推荐的。
有一种叫做to_excel的方法(这里是文档),它允许将文件保存到ADL的容器中,但是我遇到了文件系统访问协议的问题。在同一个类中,我使用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
有人能帮帮我吗?
提前感谢!
熊猫数据帧不支持该协议。在数据库上,您似乎只能通过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()
write.save之后
运行下面的代码,它只不过是将文件的临时位置移动到您指定的位置。
下面的代码完成了移动文件的工作。
%sh
sudo mv file_name.xlsx /dbfs/mnt/fpmount/