python-3.x - 如何将 xlsx 或 xls 文件读取为 Spark 数据帧

标签 python-3.x azure databricks

任何人都可以告诉我,在不转换 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 个库:

  1. 集群 -> 选择集群 -> 库 -> 安装新的 -> Maven -> 在坐标中:com.crealytics:spark-excel_2.12:0.13.5

  2. 集群 -> 选择您的集群 -> 库 -> 安装新的 -> 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 个库:

  1. 集群 -> 选择您的集群 -> 库 -> 安装新的 -> PyPI-> 在中:xlrd

  2. 集群 -> 选择集群 -> 库 -> 安装新的 -> 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/

相关文章:

python - 如何替换图像中彩色对象的颜色?

python - 如何在我的特定条件下在数据框中添加列?

azure - Bot Framework 迁移到 Azure 是否意味着 Bot Framework 和 Skype for Business channel 的预览状态结束?

java - 使用 DataFrameReader 从 S3 读取文件

Azure Databricks API

apache-spark - 如何确定 Apache Spark 数据帧中的分区大小

python - 数据框内的比较

python - 自动礼物的循环问题

c# - 从 asp.net Page_Load 制作 HTTP Post 的最佳实践?

azure - 无法将 Azure DevOps 组织连接到 Azure Active Directory