PySpark实战:flatMapValues操作
来自CloudWiki
介绍
flatMapValues操作是一个变换算子,
它的作用是对RDD元素格式为KV对中的Value进行func定义的逻辑处理。
Value中每一个元素被输入函数func映射为一系列的值,然后这些值再与原RDD中的Key组成一系列新的KV对,并将结果进行扁平化处理。
代码
import findspark findspark.init() ############################################## from pyspark.sql import SparkSession spark = SparkSession.builder \ .master("local[1]") \ .appName("RDD Demo") \ .getOrCreate(); sc = spark.sparkContext ############################################# rdd = sc.parallelize([("a", ["x", "y", "z"]), ("c", ["w", "m"])]) def f(x): return x ret = rdd.flatMapValues(f) #[('a', 'x'), ('a', 'y'), ('a', 'z'), ('c', 'w'), ('c', 'm')] print(ret.collect()) ############################################## sc.stop()
- ret = rdd.flatMapValues(f) 将对RDD中每个KV按照函数f进行逻辑处理,
在对第一个KV键值对("a",["x","y","z"])进行处理时,
当Key为"a"时,会对["x","y","z"]这个Value中的每一个元素进行f函数逻辑处理。即返回"x","y","z"
并依次与原Key合并成新的KV, 即[('a','x'),('a','y'),('a','z')]
输出
[('a', 'x'), ('a', 'y'), ('a', 'z'), ('c', 'w'), ('c', 'm')]