林子雨-5.2 键值对RDD

目录

 

1、创建键值对RDD

从文件加载

通过并行集合创建

2、常用的键值对RDD转换操作(reduceByKey和groupByKey)

3、keys,values.sortByKey,mapValues,join

4、综合实例

 

1、创建键值对RDD

从文件加载

通过并行集合创建

2、常用的键值对RDD转换操作(reduceByKey和groupByKey)

groupByKey的valueList以Iterable的形式保存(放在Iterable容器中)

用groupByKey和reduceByKey完成词频统计

3、keys,values.sortByKey,mapValues,join

keys:把key取出形成新的RDD

values:与keys同理

sortByKey():默认按Key升序排序(false为降序)

sortBy():.sortBy(_._2,false)按值降序排序

mapValues(fanc)

只对value进行操作

join

4、综合实例

 

### 使用 Spark RDD 读取文件处理键值对 为了实现通过 Spark RDD 来读取文件处理其中的键值对,可以采用如下方法: #### 创建环境与初始化 SparkContext 首先,在使用任何 Spark 功能之前,需创建一个 `SparkConf` 对象来配置应用程序,基于此对象实例化 `SparkContext`。 ```scala import org.apache.spark.{SparkConf, SparkContext} val conf = new SparkConf().setAppName("ReadFileAndProcessKeyValuePairs").setMaster("local[*]") val sc = new SparkContext(conf) ``` #### 文件读取转换成 RDD 解析为键值对 假设有一个文本文件每行数据由制表符分隔表示一对键和值,则可以通过调用 `sc.textFile()` 方法加载该文件到内存中形成 RDD 后再映射每一行为对应的键值对形式。 ```scala // 假设文件路径名为 "file_path" val lines = sc.textFile("file_path") // 将每一行分割成键值对的形式 val keyValuePairs = lines.map(line => { val parts = line.split("\t") // 或者其他合适的分隔符 (parts(0), parts(1)) }) ``` 上述代码片段展示了如何将输入的数据集中的记录按照指定的方式拆分成键值二元组[^1]。 #### 处理键值对 一旦获得了包含键值对RDD (`keyValuePairs`) ,就可以对其进行各种操作。例如统计每个唯一键关联了多少条目;或者计算特定条件下某些键对应的所有值之总和等复杂业务逻辑运算。 对于简单的计数场景可直接应用 `countByKey()` 函数获取结果字典,而对于更复杂的聚合需求则可能需要用到像 `reduceByKey(func)` 这样的函数来进行自定义规约过程[^2]。 需要注意的是如果涉及到跨分区的操作比如 `groupByKey` 那么会触发 shuffle 操作从而影响性能因此应该谨慎评估是否真的必要执行此类变换[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值