以下是一个示例代码,展示了如何在Apache Spark中使用分区列来写入和读取Parquet文件:
from pyspark.sql import SparkSession
# 创建Spark会话
spark = SparkSession.builder.appName("ParquetPartitioningExample").getOrCreate()
# 创建示例数据
data = [("Alice", 25, "Female"), ("Bob", 30, "Male"), ("Charlie", 35, "Male"), ("Diana", 40, "Female")]
df = spark.createDataFrame(data, ["name", "age", "gender"])
# 将数据写入Parquet文件,并以gender列进行分区
df.write.partitionBy("gender").parquet("path/to/parquet/file")
# 从Parquet文件中读取数据
df_read = spark.read.parquet("path/to/parquet/file")
# 显示读取的数据
df_read.show()
# 查看分区列
df_read.printSchema()
# 关闭Spark会话
spark.stop()
在这个例子中,我们首先创建了一个Spark会话,并使用createDataFrame
函数创建了一个DataFrame对象。然后,我们使用write.partitionBy
方法将数据写入Parquet文件,并以gender列进行分区。最后,我们使用read.parquet
方法从Parquet文件中读取数据,并使用show
方法显示读取的数据和printSchema
方法查看分区列。
请注意,partitionBy
方法只能用于写入操作,而不能用于读取操作。在读取Parquet文件时,Spark会自动识别和加载分区列的值。