rdd创建2

目录

键值对rdd的概念及作用

创建键值对rdd

(1)创建普通rdd

键值对rdd的keys和values方法

使用键值对rdd的reducebykey()方法

使用键值对rdd的groupbykey()方法groupbykey:对具有相同键的值进行分组,可对同一组进行计数和求和等

使用join方法连接两个rdd

Rightouterjoin()方法

leftouterjoin()方法

fullouterjoin()方法

键值对rdd的概念及作用

键值对rdd

  1. 键值对rdd由一组组键值对组成的
  2. 作用:提供了各个键或跨节点重新进行数据分组的操作接口 eg:reduceByKey()

创建键值对rdd

(1)创建普通rdd

Val rdd=dc.parallelize(

List(“this is a test”,”how are you “,”I am fine”,”can you tell me”))

#每行第一个单词作为键,整个句子作为值

#建立键值对rdd

Val words =rdd.map(x=>(x.split( “ “) (0),x))

Words.collect.foreach(print)

键值对rddkeysvalues方法

Keys:方法返回一个仅包含键的rdd

Values:返回一个仅包含值的rdd

#使用keys方法:

Val key=word.keys

#查看key
key.collect. foreach(print)

#使用values方法

Val value=words.values

#查看value

Value. collect. foreach(print)

使用键值对rddreducebykey()方法

Reducebykey方法:用于合并相同键的值,作用对象是键值对,只对键的处理

Reducebykey():将相同键的前两个值传给输入函数,产生一个新的返回值,新产生的返回值与rdd中的相同键的下一个值组成两个元素,在传给输出函数

#创建rdd

Val rdd_1=sc.parallelize(

List((‘a’,1,(‘a’,2),(‘b’,1),(‘c’,1), ,(‘c’,1)))

#使用reducebykey()方法将值相加

Val re_rdd1=rdd_1.reduceByKey((a,b)=>a+b)

#查看结果

Re_rdd_1. collect. foreach(print)

使用键值对rddgroupbykey()方法
groupbykey:对具有相同键的值进行分组,可对同一组进行计数和求和等

#groupbykey()相同键分组

Val g_rdd=rdd_1.groupbykey()

#查看分组结果
g_rdd. collect. foreach(print)

#使用map方法查看分组后每个分组中的值和数量

G_rdd.map(x=>x._1,x._2.size)).collect.foreach(print)

使用join方法连接两个rdd

  1. join:对两个rdd进行内连接,eg:两个rdd中分别有键值对(k,v)和(k,w=>(k,(v,w))

#创建rdd

Val rdd1=sc.parallelize(List((‘a’,1),(‘b’,2),(‘c’,3)))

Val rdd2=sc.parallelize(List((‘a’,1),(‘d’,4),(‘e’,5)))

#使用join方法对两个rdd内连接

Val j_rdd=rdd1.join(rdd2)

#查看

J_rdd.collect.foreach(print)

Rightouterjoin()方法

对键对两个rdd进行右外连接

Val right_join=rdd1.rightouterjoin(rdd2)\

Right_join.collect.foreach(print)

leftouterjoin()方法

Val left_join=rdd1.leftouterjoin(rdd2)\

left_join.collect.foreach(print)

fullouterjoin()方法

Val full_join=rdd1.fullouterjoin(rdd2)\

full_join.collect.foreach(print)

通过lookup()方法查找指定键的值

Eg:通过lookup()方法查询test的键为panda的所对应的值

Test.lookup(“panda”)

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值