You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PySpark读取.xlsx格式Excel文件并存储为DataFrame?

使用PySpark读取.xlsx文件并转为Spark DataFrame

PySpark本身不支持直接读取Excel格式文件,需要依赖第三方库spark-excel来实现,以下是具体操作步骤和示例:

1. 引入依赖包

启动PySpark时,通过--packages参数加载spark-excel库(版本需与你的Spark、Scala版本匹配,示例对应Spark 3.x + Scala 2.12):

pyspark --packages com.crealytics:spark-excel_2.12:0.14.0

如果是在代码中初始化SparkSession,也可以直接配置依赖:

from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("ReadExcel") \
    .config("spark.jars.packages", "com.crealytics:spark-excel_2.12:0.14.0") \
    .getOrCreate()

2. 基础读取示例

若Excel文件第一行是表头,可直接读取并自动推断列类型:

# 读取xlsx文件
df = spark.read \
    .format("com.crealytics.spark.excel") \
    .option("header", "true") \  # 将第一行设为列名
    .option("inferSchema", "true") \  # 自动推断各列数据类型
    .load("/path/to/your/file.xlsx")

# 验证结果
df.printSchema()  # 查看DataFrame结构
df.show()  # 展示前20行数据

3. 进阶参数配置

如果需要指定工作表、跳过空行或设置数据起始行,可添加对应的option:

df = spark.read \
    .format("com.crealytics.spark.excel") \
    .option("header", "true") \
    .option("inferSchema", "true") \
    .option("sheetName", "销售数据") \  # 指定读取的工作表名称
    .option("startRow", 2) \  # 从第2行开始读取数据(表头在第1行)
    .option("ignoreEmptyRows", "true") \  # 忽略文件中的空行
    .load("/path/to/your/file.xlsx")

关键注意事项

  • 版本兼容:spark-excel的版本需与Spark、Scala版本对应,比如Spark 3.x对应Scala 2.12,建议使用0.14.0及以上版本
  • 分布式环境:如果在集群运行,需确保所有节点能访问到xlsx文件,或将文件上传至HDFS等分布式存储系统
  • 性能优化:若已知数据Schema,建议用.schema()方法手动指定,避免自动推断带来的性能开销

内容的提问来源于stack exchange,提问作者Anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:45:37