📅  最后修改于: 2023-12-03 15:18:51.368000             🧑  作者: Mango
在 Spark 中,常常需要对数据进行分区,以便能够更好地进行数据处理。Spark 提供了 partitionBy() 方法,可以用来按指定的键进行分区操作。
rdd.partitionBy(numPartitions, partitionFunc)
参数说明:
假设有以下一组数据:
data = [("apple", 12), ("orange", 8), ("apple", 4), ("orange", 5)]
使用 parallelize()
方法创建一个 RDD,然后执行 partitionBy()
方法,按 key
进行分区操作:
from pyspark import SparkContext, SparkConf
conf = SparkConf().setAppName("partitionBy").setMaster("local")
sc = SparkContext(conf=conf)
data = [("apple", 12), ("orange", 8), ("apple", 4), ("orange", 5)]
rdd = sc.parallelize(data)
partitioned = rdd.partitionBy(2, lambda x: 0 if x[0] == "apple" else 1)
print(partitioned.glom().collect())
输出结果如下:
[[], [('apple', 12), ('apple', 4)], [('orange', 8), ('orange', 5)], []]
表示 RDD 被分成了四个分区,其中第二个分区和第三个分区是按 key
进行分区的,分别包含了所有 apple
类型和 orange
类型的数据。
以上就是 PySpark 的 partitionBy() 方法的介绍。