databricks:直接将spark数据框写入excel

时间:2019-11-29 15:26:09

标签: databricks

是否有任何方法可以将spark数据帧直接写入xls / xlsx格式?

网络中的大多数示例都显示了熊猫数据框的示例。

但是我想使用spark数据框来处理我的数据。有什么想法吗?

4 个答案:

答案 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