PySpark实战:mapValues操作

来自CloudWiki
跳转至: 导航搜索

介绍

mapValues操作是一个变换算子,

它的作用是对KV格式的RDD中的每个元素应用函数func

这个过程汇总不会更改键K ,同时也保留了原始RDD的分区。

代码


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", ["hello", "spark", "!"]), ("b", ["cumt"])])
def f(x): 
        #['hello', 'spark', '!']
        #['cumt']
        print(x)
        return len(x)
rdd2 = rdd.mapValues(f)
#[('a', 3), ('b', 1)]
print(rdd2.collect())
##############################################
sc.stop()

  • 对KV键值对的每一个值执行f函数,原来的键不变,形成一个新的rdd(rdd2)

输出

[('a', 3), ('b', 1)]