是否有任何方法可以将spark数据帧直接写入xls / xlsx格式?
网络中的大多数示例都显示了熊猫数据框的示例。
但是我想使用spark数据框来处理我的数据。有什么想法吗?
答案 0 :(得分:1)
我假设因为您具有“ databricks”标签,所以您想在databricks文件存储中创建一个.xlsx文件,并且您想在databricks笔记本中运行代码。我还要假设您的笔记本正在运行python。
没有直接方法可以从Spark数据框中保存excel文档。但是,您可以将spark数据框转换为pandas数据框,然后从那里导出。我们需要先安装xlsxwriter软件包。您可以使用databricks utilites命令在笔记本环境中执行此操作:
dbutils.library.installPyPI('xlsxwriter')
dbutils.library.restartPython()
我遇到了一些权限问题,将excel文件直接保存到dbfs。一种快速的解决方法是将其保存到群集的默认目录,然后将其sudo移动到dbfs中。这是一些示例代码:
# Creating dummy spark dataframe
spark_df = spark.sql('SELECT * FROM default.test_delta LIMIT 100')
# Converting spark dataframe to pandas dataframe
pandas_df = spark_df.toPandas()
# Exporting pandas dataframe to xlsx file
pandas_df.to_excel('excel_test.xlsx', engine='xlsxwriter')
然后在新命令中,使用%sh指定要在shell中运行的命令:
%sh
sudo mv excel_test.xlsx /dbfs/mnt/data/
答案 1 :(得分:0)
我相信您可以这样做。
sourcePropertySet.write
.format("com.databricks.spark.csv")
.option("header", "true")
.save("D:\\resultset.csv")
我不确定您可以直接写到Excel,但是Excel肯定可以使用CSV。几乎可以肯定,这是做这种事情的最简单方法,也是最干净的方法。在Excel中,您有各种格式,在某些系统中使用时会引发错误(请考虑合并单元格)。
答案 2 :(得分:0)
然而,Pyspark 不提供任何保存 excel 文件的方法。但是你可以保存csv文件,然后它可以在Excel中读取。
从 pyspark.sql 模块 2.3 版开始,您有 write.csv:
df.write.csv('路径/文件名'))
文档:https://spark.apache.org/docs/latest/api/python/pyspark.sql.html?highlight=save
答案 3 :(得分:0)
可以从 pySpark 生成 Excel 文件。
df_spark.write.format("com.crealytics.spark.excel")\
.option("header", "true")\
.mode("overwrite")\
.save(path)
您需要安装 com.crealytics:spark-excel_2.12:0.13.5
(当然或更新版本)库,例如在 Azure Databricks 中,通过在集群的库列表(按钮之一)中将其指定为新的 Maven 库在 Databricks UI 的左侧边栏)。
有关详细信息,请参阅 https://github.com/crealytics/spark-excel。