Spark RDD编程案例

本文介绍了使用Spark和Hadoop进行数据处理的方法,包括如何筛选特定格式的数据、排序及求最大值的操作,并探讨了键值对处理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.获取弹幕文件中带!的弹幕

由于!有些是中英文的,所以filter需要一个||

// 获取弹幕中带感叹号的,无论大小写
var lines = sc.textFile("file:///root/Desktop/barrage.json")

var lines_after= lines.filter(line=>(line.contains("!")) || (line.contains("!")))

// 去除空格等多余字符
var result = lines_after.map(x=>x.trim.substring(1,x.trim.length-2))

// 保存到文件
result.saveAsTextFile("file:///root/Desktop/result/result1")

2.文件排序

var readline = sc.textFile("file:///disk4/bigdata")

var result = readline.filter(x => x.trim().length>0).map(x=>(x.toInt,"")).partitionBy(new HashPartitioner(1)).sortByKey().map(x =>x._1)

result.collect.foreach(println)

result.saveAsTextFile("file:///disk4/bigdata2")

3.求最大值

var readline = sc.textFile("hdfs://node1:9000/bigdata")

var result = readline.map(x=>(x.toInt,x)).sortByKey(false).take(1).map(x=>x._2.toInt)

for(x <- lines ){println(x)}

val rdd = sc.parallelize(lines)

rdd.saveAsTextFile("file:///disk/ssss")

思考一下为什么2需要合并为一个分区,而3不需要?

 

4.键值对中values的处理

1)mapValues

val text = sc.parallelize(Array(("a",1),("b",2)))
val result = text.mapValues(x => x+1)

2)map

val text = sc.parallelize(Array(("a",1),("b",2)))
val result = text.map(x => (x._1,x._2+1))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值