2.2.6 reduceByKey算子 def reduceByKey(func: (V, V) => V): RDD[(K, V)]
该函数用于将RDD[K,V]中每个K对应的V值根据映射函数来运算 reduceByKey先在每个分区中计算,再将结果进行shuffle,减小运算量
- <div style="text-indent: 0em;"><span style="color: rgb(0, 0, 255); font-size: 12pt;">1. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">scala</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">></span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(249, 38, 89); font-size: 8pt;">var</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> rdd1 </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">=</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> sc</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">makeRDD</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(Array((</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"A"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">0</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">),(</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"A"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">2</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">),(</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"B"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">1</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">),(</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"B"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">2</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">),(</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"C"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">1</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">)))</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 0, 255); font-size: 12pt;">2. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">rdd1</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">:</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> org</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">apache</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">spark</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">rdd</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">RDD</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">[(String,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">Int)]</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">=</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">ParallelCollectionRDD[</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">91</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">]</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> at makeRDD at </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">:</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">21</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 0, 255); font-size: 12pt;">3. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">scala</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">></span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><b><span style="color: rgb(249, 38, 89); font-size: 8pt;">var</span></b><b><span style="color: rgb(0, 0, 255); font-size: 8pt;"> rdd2 </span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">=</span></b><b><span style="color: rgb(0, 0, 255); font-size: 8pt;"> rdd1</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span></b><b><span style="color: rgb(0, 0, 255); font-size: 8pt;">reduceByKey</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">((</span></b><b><span style="color: rgb(0, 0, 255); font-size: 8pt;">x</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span></b><b><span style="color: rgb(0, 0, 255); font-size: 8pt;">y</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">)</span></b><b><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">=></span></b><b><span style="color: rgb(0, 0, 255); font-size: 8pt;"> x </span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">+</span></b><b><span style="color: rgb(0, 0, 255); font-size: 8pt;"> y</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">)</span></b><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 0, 255); font-size: 12pt;">4. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">rdd2</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">:</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> org</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">apache</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">spark</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">rdd</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">RDD</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">[(String,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">Int)]</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">=</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">ShuffledRDD[</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">94</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">]</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> at reduceByKey at </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">:</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">23</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 0, 255); font-size: 12pt;">5. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">scala</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">></span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> rdd2</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">collect</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 0, 255); font-size: 12pt;">6. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">res85</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">:</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">Array[(String,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">Int)]</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">=</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">Array((</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">A</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">2</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">),</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">B</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">3</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">),</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">C</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">1</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">))</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div>
复制代码
2.2.7 cogroup算子 def cogroup[W](other: RDD[(K, W)]): RDD[(K, (Iterable[V], Iterable[W]))]
def cogroup[W1, W2](other1: RDD[(K, W1)], other2: RDD[(K, W2)]): RDD[(K, (Iterable[V], Iterable[W1], Iterable[W2]))]
def cogroup[W1, W2, W3](other1: RDD[(K, W1)], other2: RDD[(K, W2)], other3: RDD[(K, W3)]): RDD[(K, (Iterable[V], Iterable[W1], Iterable[W2], Iterable[W3]))]
cogroup相当于SQL中的全外关联full outer join,返回左右RDD中的记录,关联不上的为空 - <div style="text-indent: 0em;"><span style="color: rgb(249, 38, 89); font-size: 12pt;">1. </span><span style="color: rgb(249, 38, 89); font-size: 8pt;">var</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> rdd1 </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">=</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> sc</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">makeRDD</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(Array((</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"A"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"1"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">),(</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"B"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"2"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">),(</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"C"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"3"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">)),</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">2</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">)</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(249, 38, 89); font-size: 12pt;">2. </span><span style="color: rgb(249, 38, 89); font-size: 8pt;">var</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> rdd2 </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">=</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> sc</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">makeRDD</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(Array((</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"A"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"a"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">),(</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"C"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"c"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">),(</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"D"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"d"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">)),</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">2</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">)</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(190, 190, 197); font-size: 12pt;">3. </span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 0, 255); font-size: 12pt;">4. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">scala</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">></span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(249, 38, 89); font-size: 8pt;">var</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> rdd3 </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">=</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><b><span style="color: rgb(0, 0, 255); font-size: 8pt;">rdd1</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span></b><b><span style="color: rgb(0, 0, 255); font-size: 8pt;">cogroup</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span></b><b><span style="color: rgb(0, 0, 255); font-size: 8pt;">rdd2</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">)</span></b><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 0, 255); font-size: 12pt;">5. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">rdd3</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">:</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> org</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">apache</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">spark</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">rdd</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">RDD</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">[(String,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(Iterable[String],</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">Iterable[String]))]</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">=</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">MapPartitionsRDD[</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">12</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">]</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> at cogroup at </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">:</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">25</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(190, 190, 197); font-size: 12pt;">6. </span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 0, 255); font-size: 12pt;">7. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">scala</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">></span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> rdd3</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">partitions</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">size</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 0, 255); font-size: 12pt;">8. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">res3</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">:</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">Int</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">=</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(204, 0, 204); font-size: 8pt;">2</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(190, 190, 197); font-size: 12pt;">9. </span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 0, 255); font-size: 12pt;">10. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">scala</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">></span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> rdd3</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">collect</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 0, 255); font-size: 12pt;">11. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">res1</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">:</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">Array[(String,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(Iterable[String],</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">Iterable[String]))]</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">=</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">Array(</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 170, 0); font-size: 12pt;">12. </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">B</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,(CompactBuffer(</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">2</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">),CompactBuffer())),</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 170, 0); font-size: 12pt;">13. </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">D</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,(CompactBuffer(),CompactBuffer(</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">d</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">))),</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 170, 0); font-size: 12pt;">14. </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">A</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,(CompactBuffer(</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">1</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">),CompactBuffer(</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">a</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">))),</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 170, 0); font-size: 12pt;">15. </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">C</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,(CompactBuffer(</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">3</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">),CompactBuffer(</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">c</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">)))</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div>
复制代码
2.2.8 join算子 def join[W](other: RDD[(K, W)]): RDD[(K, (V, W))]
def join[W](other: RDD[(K, W)], numPartitions: Int): RDD[(K, (V, W))]
def join[W](other: RDD[(K, W)], partitioner: Partitioner): RDD[(K, (V, W))]
join相当于SQL中的内关联join,只返回两个RDD根据K可以关联上的结果,join只能用于两个RDD之间的关联,如果要多个RDD关联,多关联几次即可。 - <div style="text-indent: 0em;"><span style="color: rgb(249, 38, 89); font-size: 12pt;">1. </span><span style="color: rgb(249, 38, 89); font-size: 8pt;">var</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> rdd1 </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">=</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> sc</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">makeRDD</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(Array((</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"A"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"1"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">),(</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"B"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"2"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">),(</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"C"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"3"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">)),</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">2</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">)</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(249, 38, 89); font-size: 12pt;">2. </span><span style="color: rgb(249, 38, 89); font-size: 8pt;">var</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> rdd2 </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">=</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> sc</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">makeRDD</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(Array((</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"A"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"a"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">),(</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"C"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"c"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">),(</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"D"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"d"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">)),</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">2</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">)</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 0, 255); font-size: 12pt;">3. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 0, 255); font-size: 12pt;">4. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">scala</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">></span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> rdd1</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">join</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">rdd2</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">).</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">collect</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 0, 255); font-size: 12pt;">5. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">res10</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">:</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">Array[(String,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(String,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">String))]</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">=</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">Array((</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">A</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,(</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">1</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">a</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">)),</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">C</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,(</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">3</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">c</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">)))</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div>
复制代码
|