RDD的Join

来源:互联网 发布:赵薇背后的势力 知乎 编辑:程序博客网 时间:2024/05/21 19:25

工作中遇到一个问题:在Spark的map阶段要用到Hive中的表中的数据

最开始的想法就是预加载,在map阶段之前将表加载到DataFrame中,然后作为map的参数传入

因为刚接触Spark,不了解具体执行机制,map阶段是分布式的,所以这样也就是说要将DataFrame传输到其他几台机器,如果Hive表非常大,那么内存带宽就是瓶颈

后来看到RDD数据集,作为Spark特有的数据集,想到可以将DataFrame转换为一个RDD数据集,然后在map阶段之前和原有的RDD数据集做一个join,

这样在map阶段就会变成一个Join后的RDD数据集,就可以直接操作。

因为都是元组类型,直接调用方法leftOuterJoin即可。

例如:

RDD[(K,V)]  RDD[(K,W)]  join后就是RDD[(K, (VOption[W]))]

具体可见:spark Scala API



参考:http://lxw1234.com/archives/2015/07/386.htm

0 0