任何人都可以告诉我,在不转换 xlsx 或 xls 文件的情况下,我们如何将它们读取为 Spark 数据帧
我已经尝试使用 pandas 进行读取,然后尝试转换为 Spark 数据帧,但收到错误,错误是
错误:
Cannot merge type <class 'pyspark.sql.types.DoubleType'> and <class 'pyspark.sql.types.StringType'>
代码:
import pandas
import os
df = pandas.read_excel('/dbfs/FileStore/tables/BSE.xlsx', sheet_name='Sheet1',inferSchema='')
sdf = spark.createDataFrame(df)
最佳答案
我尝试根据 @matkurek 和 @Peter Pan 的回答在 2021 年 4 月给出一个总体更新版本。
Spark
您应该在 databricks 集群上安装以下 2 个库:
集群 -> 选择集群 -> 库 -> 安装新的 -> Maven -> 在坐标中:com.crealytics:spark-excel_2.12:0.13.5
集群 -> 选择您的集群 -> 库 -> 安装新的 -> PyPI-> 在包中:xlrd
然后,您将能够按如下方式读取 Excel:
sparkDF = spark.read.format("com.crealytics.spark.excel") \
.option("header", "true") \
.option("inferSchema", "true") \
.option("dataAddress", "'NameOfYourExcelSheet'!A1") \
.load(filePath)
Pandas
您应该在 databricks 集群上安装以下 2 个库:
集群 -> 选择您的集群 -> 库 -> 安装新的 -> PyPI-> 在包中:xlrd
集群 -> 选择集群 -> 库 -> 安装新的 -> PyPI-> 在包中:openpyxl
然后,您将能够按如下方式读取 Excel:
import pandas
pandasDF = pd.read_excel(io = filePath, engine='openpyxl', sheet_name = 'NameOfYourExcelSheet')
请注意,您将有两个不同的对象,在第一个场景中是 Spark Dataframe,在第二个场景中是 Pandas Dataframe。
关于python-3.x - 如何将 xlsx 或 xls 文件读取为 Spark 数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56426069/