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

PySpark新手求助:如何将指定CSV文件加载为DataFrame

解决PySpark加载CSV的问题

嘿,作为PySpark新手,加载CSV确实容易踩小坑,我来帮你把代码补全并解释清楚!

首先先理清楚你的CSV结构——你提供的内容看起来是粘贴时格式乱了,正确的格式应该是表头行+数据行的形式,比如:

article_id,title,short_desc
33,"novel findings support original asco-cap guidelines","support categorization of her2 by fish status used in bcirg clinical trials"

如果你的CSV是用空格分隔的,也没关系,后面代码里可以调整分隔符参数。

完整的CSV读取代码

from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StructField, IntegerType, StringType

# 初始化SparkSession,这部分你已经写对啦
spark = SparkSession.builder.appName('Basics').getOrCreate()

# 补全自定义Schema,严格匹配你的列类型
schema = StructType([
    # article_id是整数类型,设为不可为空(根据你的数据调整)
    StructField("article_id", IntegerType(), nullable=False),
    # title和short_desc是长文本,用StringType
    StructField("title", StringType(), nullable=True),
    StructField("short_desc", StringType(), nullable=True)
])

# 读取CSV文件,这里分两种情况:
# 情况1:逗号分隔的标准CSV
df = spark.read.csv(
    path="你的CSV文件路径.csv",  # 替换成实际文件路径
    schema=schema,
    header=True,  # 告诉PySpark第一行是表头
    multiLine=True  # 处理包含空格的字段,避免被拆分
)

# 情况2:如果是空格分隔的CSV,把sep参数改成" "
# df = spark.read.csv(
#     path="你的CSV文件路径.csv",
#     schema=schema,
#     header=True,
#     sep=" ",
#     multiLine=True
# )

# 验证读取结果,truncate=False能显示完整文本
df.show(truncate=False)

关键注意点

  • 自定义Schema的必要性:不要依赖PySpark自动推断类型,自定义Schema能确保article_id被识别为整数,避免把它当成字符串处理,同时也能提升读取速度。
  • 分隔符设置:一定要根据你的实际CSV分隔符调整sep参数,默认是逗号,如果是空格分隔就改成" ",否则会出现列数不匹配的错误。
  • multiLine参数:如果你的文本字段(比如title、short_desc)包含空格或者换行,这个参数能确保整个字段被正确读取,不会被拆分到多个列里。

内容的提问来源于stack exchange,提问作者Sriram Arvind Lakshmanakumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:27:11