SPARK KV RDD操作

本文详细介绍了Spark中处理Pair类型RDD的各种Transformation操作,包括Map类和聚合类。Map类包括map和mapValues,其中mapValues仅对value进行操作。聚合类如reduceByKey、groupByKey和foldByKey用于根据key进行数据聚合。文章还探讨了flatMap的使用,并通过实例解析了foldByKey和aggregateByKey的工作原理,强调了对RDD分区的理解。
摘要由CSDN通过智能技术生成

pair 的要求是 (k, v), 这里的 k, v 可以是基础数据类型,数组,pair等
spark rdd 处理的数据,更多的还是 pair 类型,总结一下 常用的 Transformation 操作

创建几种 rdd

    val conf: SparkConf = new SparkConf().setMaster("local").setAppName("broadCast")
    val sc = new SparkContext(conf)
    sc.setLogLevel("warn")
    
    val rdd1 = sc.parallelize(List((1,2),(3,4),(5,6)))
    val rdd2 = sc.range(0, 6).map(x => (x, (x*10, x*100)))

rdd1: RDD[(Long, Long)]
rdd2: RDD[(Long, (Long, Long))]

Map 类

对于Map类型使用, 需要按位置规定 pair 中元素计算方式, 对于 kv pair 形式的 RDD,不提供 mapPartition 操作

  • map【(K, V) 】: K, V 都进行操作
  • mapValues【(K, V) 】: K 不做操作, mapValues 默认对 V 做更改
 	// rdd1 pair[1] 每个元素加 2, 下面两个操作等价 
 	rdd1.map(x => (x._1 , x._2 + 10)).foreach(println)
    rdd1.mapValues(x => (x + 10)).foreach(println)
	output :
	(1,12)
	(3,14)
	(5,16)
	(1,12)
	(3,14)
	(5,16)

	// pair 中多元素情况
    rdd2.map(x => (x._1, x._2, x._2._2 + 2)).foreach(println) // 这个 x 代表 (k, v), x._1 -> k
    rdd2.mapValues(x => (x,x._2 + 1, x._2 + 2)).foreach(println)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值