如何在 Databricks pyspark 中导入 Excel 文件

Posted

技术标签:

【中文标题】如何在 Databricks pyspark 中导入 Excel 文件【英文标题】:how to import Excel file in Databricks pyspark 【发布时间】:2018-09-18 09:50:43 【问题描述】:

我正在尝试将我的 excel 文件导入 Azure-DataBricks 机器中的 PySpark,我必须将其移至 PySpark Dataframe。我无法执行此操作。出现错误

import pandas
data = pandas.read_excel('/dbfs/FileStore/tables/Time_Payments.xlsx')
df_data = sqlContext.createDataFrame(data)

执行上述操作时,出现以下错误。

Error : field Additional Information: Can not merge type <class 'pyspark.sql.types.DoubleType'> and <class 'pyspark.sql.types.StringType'> 

在这里需要您的帮助。

【问题讨论】:

【参考方案1】:

问题是由于您的 Excel 文件包含内部具有不同类型的列(例如数字和字符串)或某些值是空的,因此当将其转换为熊猫数据框时,它会用例如,数字列的“NaN”。当无法推断架构时,这会导致 spark 出错。

尝试使用架构作为参数创建数据框。

示例:

#Create PySpark DataFrame Schema
p_schema = StructType([StructField('ADDRESS',StringType(),True),StructField('CITY',StringType(),True),StructField('FIRSTNAME',StringType(),True),StructField('LASTNAME',StringType(),True),StructField('PERSONID',DecimalType(),True)])

#Create Spark DataFrame from Pandas
df_person = sqlContext.createDataFrame(data, p_schema)

但我建议使用一个特定的包来处理将 Excel 文件直接加载到 Spark 数据框,而不通过 Panda:

https://github.com/crealytics/spark-excel

【讨论】:

你能说得更准确一点吗?我不确定如何为此编写代码。如果您有示例代码,请分享。非常感谢您的帮助。 是的,我试过了。代码在这里不起作用。我收到“无效语法”错误

以上是关于如何在 Databricks pyspark 中导入 Excel 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Databricks 的 PySpark 中使用在 Scala 中创建的 DataFrame

如何使用 Python / Pyspark 在 Databricks 笔记本中合并数据帧

如何在 Azure Databricks PySpark 中执行存储过程?

如何使用 Pyspark 在 Databricks 中合并 Hive 表中的记录?

使用别名重命名 pyspark 列

使用pyspark,spark + databricks时如何将完全不相关的列添加到数据框中