有人能告诉我不转换xlsx或xls文件,我们如何将它们作为spark Dataframe 读取吗
我已经尝试用Pandas阅读,然后尝试转换为Spark Dataframe ,但得到了错误,错误是
错误:
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)
7条答案
按热度按时间bnlyeluc1#
我尝试根据@matkurek和@彼得潘的回答,给予2021年4月的通用更新版本。
Spark
您应该在数据库群集上安装以下2个库:
1.群集-〉选择群集-〉库-〉安装新项-〉Maven -〉在 * 坐标 * 中:化合物分析:Spark-excel_2.12:0.13.5
1.集群-〉选择集群-〉库-〉安装新的-〉PyPI-〉在 * 包 * 中:第十三次
然后,您将能够阅读您的excel如下:
Pandas
您应该在数据库群集上安装以下2个库:
1.集群-〉选择集群-〉库-〉安装新的-〉PyPI-〉在 * 包 * 中:第十三次
1.集群-〉选择集群-〉库-〉安装新的-〉PyPI-〉在 * 包 * 中:开放式平台
然后,您将能够阅读您的excel如下:
注意,您将有两个不同的对象,在第一个场景中是Spark Dataframe ,在第二个场景中是Pandas Dataframe 。
hs1ihplo2#
正如@matkurek提到的,你可以直接从excel中阅读它。事实上,这应该是一个比涉及Pandas更好的做法,因为那时Spark的好处就不存在了。
您可以运行与qbove定义相同的代码示例,但只需将所需的类添加到SparkSession的配置中。
然后,您可以阅读您的excel文件。
vohkndzv3#
你的帖子里没有你的excel数据,但是我复制了和你一样的问题。
下面是我的示例excel
test.xlsx
的数据。您可以看到在我的列
B
中有不同的数据类型:双精度值2.2
和字符串值C
。如果我运行下面的代码
它将返回与您的错误相同的错误。
TypeError: field B: Can not merge type <class 'pyspark.sql.types.DoubleType'> and class 'pyspark.sql.types.StringType'>
如果我们尝试通过
df.dtypes
检查df
列的dtypes
,我们将看到。列
B
的dtype
为object
,spark.createDateFrame
函数无法从实际数据中推断出列B的真实的数据类型,因此解决方法是传递一个schema来帮助推断列B的数据类型,如下面的代码所示。强制将列B设置为
StringType
以解决数据类型冲突。baubqpgj4#
您可以通过spark的read函数读取excel文件。这需要一个spark插件,要将其安装到数据库中,请访问:
集群〉您的集群〉库〉安装新的〉选择Maven并在“坐标”中粘贴com.crealytics:spark-excel_2.12:0.13.5
之后,您可以通过以下方式读取文件:
kg7wmglp5#
只需打开xlsx或xlms文件,在Pandas中打开文件,然后在spark中打开
进口Pandas当PD
pdf = www.example.com_excel("文件. xlsx",引擎="openpyxl")pd.read_excel('file.xlsx', engine='openpyxl')
df =Spark会话.创建 Dataframe (df.类型(字符串))
cwxwcias6#
下面的配置和代码可以让我将excel文件读入pyspark Dataframe 。执行python代码前的先决条件。
在数据块群集上安装Maven库。
Maven库名称和版本:化学分析:spark-excel_2.12:0.13.5
数据块运行时:9.0(包括Apache Spark 3.1.2和Scala 2.12)
在python笔记本中执行以下代码,将excel文件加载到pyspark Dataframe 中:
bvn4nwqk7#
将. xls/. xlsx文件从Azure Blob存储读取到Spark DF的步骤
您可以借助名为spark-excel的库(也称为
com.crealytics.spark.excel
)将Azure blob存储中的excel文件读取到pyspark Dataframe 。1.使用UI或Databricks CLI安装库。(群集设置页面〉库〉安装新选项。确保选择
maven
)1.安装库后。你需要正确的凭据才能访问Azure Blob存储。你可以在"群集设置"页〉"高级选项"〉"Spark配置"中提供访问密钥
示例:
注意:如果您是集群所有者,您可以将其作为机密提供,而不是像文档中提到的那样以纯文本形式提供访问密钥
1.重新启动群集。您可以使用以下代码读取位于blob存储中的excel文件
PS:
spark.read.format("excel")
是V2的方法,而spark.read.format("com.crealytics.spark.excel")
是V1,你可以阅读更多的here