首页/数据/数据工程与 ETL 速查/PySpark 读写与转换最小示例
本包目录(311 条)
管道基础52 条
Kafka64 条调度与编排40 条数仓建模52 条数据质量50 条CDC 与同步53 条

PySpark 读写与转换最小示例

PySpark 把 Spark 能力带入 Python:读列存、按列过滤聚合、写出分区表;DataFrame API 与 SQL 可以混用。

入口SparkSession.builder.appName(...).getOrCreate()
读spark.read.parquet / csv / orc
写df.write.mode(...).partitionBy('dt').parquet(path)

按渠道汇总示例

按渠道汇总示例
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName('orders_etl').getOrCreate()
df = spark.read.parquet('s3a://lake/curated/dwd/orders/dt=2026-10-11')
(df.filter('amount > 0')
   .groupBy('channel')
   .sum('amount')
   .write.mode('overwrite')
   .parquet('s3a://lake/marts/ads/orders_channel_daily'))
overwrite 目标路径写成与上游共享的目录会覆盖上游数据;不确定时先写临时目录再由调度切换。

易错点

  • 分区列在写之前要先存在于 DataFrame(如补 dt 字段),否则会写失败或全落根目录
  • 小批频繁写同一路径会积累小文件,需配合合并与重分区

数据来源与参考

  • Apache Spark 官方文档:PySpark DataFrame API(read/write)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌