分享

Spark算子总结2

二. Transformation
Transformation 变换/转换算子:这种变换并不触发提交作业,完成作业中间过程处理。
Transformation 操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算。
2.1  RDD基本操作转换
2.1.1 map算子
将一个RDD中的每个数据项,通过map中的函数映射变为一个新的元素。
输入分区与输出分区一对一,即:有多少个输入分区,就有多少个输出分区。

2.1.2 flatmap算子
  1. <div style="text-indent: 0em;"><span style="color: rgb(194, 143, 91); font-size: 12pt;">1. </span><span style="color: rgb(194, 143, 91); font-size: 8pt;">/</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">/ </span><span style="color: rgb(194, 143, 91); font-size: 8pt;"><font face="Consolas">使用</font>flatMap算子</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;">scala</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">> </span><span style="color: rgb(249, 38, 89); font-size: 8pt;">var</span><span style="color: rgb(194, 143, 91); font-size: 8pt;"> </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">flatmapresult </span><span style="color: rgb(194, 143, 91); font-size: 8pt;">= </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">data.flatMap</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">(</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">line</span><span style="color: rgb(194, 143, 91); font-size: 8pt;"> => </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">line.split</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">("\\s+"))</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(194, 143, 91); font-size: 12pt;">3. </span><span style="color: rgb(194, 143, 91); font-size: 8pt;">flatmapresult: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[3] at flatMap at :23</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(194, 143, 91); font-size: 12pt;">4. </span><span style="color: rgb(194, 143, 91); 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;">flagMap</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;">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;"> flatmapresult</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;">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;">=</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;">hello</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> world</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> hello</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;"> hello</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> hive</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>
复制代码
使用flatMap时候需要注意:flatMap会将字符串看成是一个字符数组
看下面的例子:
  1. <b style="background-color: rgb(255, 255, 255);"><span style="font-family: 微软雅黑; color: rgb(255, 192, 0); letter-spacing: 0pt; font-size: 9pt; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;"><font face="微软雅黑">案例区别</font>1</span></b>
复制代码
2. res32: Array[String] = Array(HELLO WORLD, HELLO SPARK, HELLO HIVE, HI SPARK)
3.
4. scala> data.flatMap(_.toUpperCase).collect
5. res33: Array[Char] = Array(H, E, L, L, O, , W, O, R, L, D, H, E, L, L, O, , S, P, A, R, K, H, E, L, L, O, , H, I, V, E, H, I, , S, P, A, R, K)

再看:
  1. <b style="background-color: rgb(255, 255, 255);"><span style="font-family: 微软雅黑; color: rgb(255, 192, 0); letter-spacing: 0pt; font-size: 9pt; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;"><font face="微软雅黑">案例区别2</font></span></b>
复制代码
2. res34: Array[Array[String]] = Array(Array(hello, world), Array(hello, spark), Array(hello, hive), Array(hi, spark))
3.
4. scala> data.flatMap(x => x.split("\\s+")).collect
5. res35: Array[String] = Array(hello, world, hello, spark, hello, hive, hi, spark)

总:flatMap只会将String扁平化成字符数组,并不会把Array[String]也扁平化成字符数组
案例区别1中,flatmap返回的是String,案例区别2flatmap返回的是Array[String]


2.1.3 mapPartitions算子

  1. def mapPartitions[U](f: (Iterator[T]) => Iterator[U], preservesPartitioning: Boolean = false)(implicit arg0: ClassTag[U]): RDD[U]
复制代码
该函数和map函数类似,只不过映射函数的参数由RDD中的每一个元素变成了RDD中每一个分区的迭代器。如果在映射的过程中需要频繁创建额外的对象,使用mapPartitions要比map高效
比如,将RDD中的所有数据通过JDBC连接写入数据库,如果使用map函数,可能要为每一个元素都创建一个connection,这样开销很大,如果使用mapPartitions,那么只需要针对每一个分区建立一个connection。

  1. <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;">(</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">1</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> to </span><span style="color: rgb(204, 0, 204); font-size: 8pt;">5</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(102, 102, 102); font-size: 12pt;">2. </span><span style="color: rgb(102, 102, 102); font-size: 8pt;">//rdd1有两个分区</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><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;"> rdd1</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><b><span style="color: rgb(0, 0, 255); font-size: 8pt;">mapPartitions</span></b><span style="color: rgb(0, 170, 0); font-size: 8pt;">{</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> x </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(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 170, 0); font-size: 12pt;">4. </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;"> result </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;">List[Int]()</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;">5. </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;"> i </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;">0</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;">6. </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;">while</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">x</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">hasNext</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, 170, 0); font-size: 12pt;">7. </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">|</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> i </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">+=</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> x</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(249, 38, 89); font-size: 8pt;">next</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, 170, 0); font-size: 12pt;">8. </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(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 170, 0); font-size: 12pt;">9. </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">|</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> result</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.::(</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">i</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">).</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">iterator</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;">10. </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(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;">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;">[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;">MapPartitionsRDD[</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">84</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">]</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> at mapPartitions 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;">12. </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(102, 102, 102); font-size: 12pt;">13. </span><span style="color: rgb(102, 102, 102); font-size: 8pt;">//rdd3将rdd1中每个分区中的数值累加</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;">14. </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;">15. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">res65</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[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(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(204, 0, 204); font-size: 8pt;">12</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;">16. </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;">17. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">res66</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>
复制代码

2.1.4 distinct算子
RDD中的元素进行去重操作
  1. <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;"> data</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">flatMap</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">line </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">=></span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> line</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">split</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"\\s+"</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;">2. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">res61</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;">=</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;">hello</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> world</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> hello</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;"> hello</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> hive</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> hi</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(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;"> data</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">flatMap</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">line </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">=></span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> line</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">split</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"\\s+"</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">)).</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">distinct</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;">res62</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;">=</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;">hive</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> hello</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> world</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;"> hi</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.1.5 coalesce算子
def coalesce(numPartitions: Int, shuffle: Boolean = false)(implicit ord: Ordering[T] = null): RDD[T]
该函数用于将RDD进行重分区,使用HashPartitioner。
第一个参数为重分区的数目,第二个为是否进行shuffle,默认为false;
  1. <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;"> data </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;">textFile</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">"/tmp/lxw1234/1.txt"</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;">data</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;">=</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;">53</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">]</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> at textFile 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(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;"> data</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;">4. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">res37</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;">=</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;">hello world</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> hello spark</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> hello hive</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> hi spark</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;">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;"> data</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;">6. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">res38</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(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(102, 102, 102); font-size: 8pt;">//RDD data默认有两个分区</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;"> </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;"> 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;"> data</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;">coalesce</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span></b><b><span style="color: rgb(204, 0, 204); font-size: 8pt;">1</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;">8. </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;">=</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">CoalescedRDD[</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;"> at coalesce 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;">9. </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;">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;">10. </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;">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;">1</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(102, 102, 102); font-size: 8pt;">//rdd1的分区数为1</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;"> 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;"> 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;"> data</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;">coalesce</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span></b><b><span style="color: rgb(204, 0, 204); font-size: 8pt;">4</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;">12. </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;">=</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">CoalescedRDD[</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;"> at coalesce 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;">13. </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;">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;">14. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">res2</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(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(102, 102, 102); font-size: 8pt;">//如果重分区的数目大于原来的分区数,那么必须指定shuffle参数为true,//否则,分区数不便</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;">15. </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;"> 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;"> data</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;">coalesce</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span></b><b><span style="color: rgb(204, 0, 204); font-size: 8pt;">4</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span></b><b><span style="color: rgb(249, 38, 89); font-size: 8pt;">true</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;">16. </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;">=</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;">7</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">]</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> at coalesce 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;">17. </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;">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;">18. </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;">4</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div>
复制代码
2.1.6 union算子
该函数比较简单,就是将两个RDD进行合并,不去重

2.1.7 zip算子
def zip[U](other: RDD[U])(implicit arg0: ClassTag[U]): RDD[(T, U)]
zip函数用于将两个RDD组合成Key/Value形式的RDD,这里默认两个RDD的partition数量以及元素数量都相同,否则会抛出异常。
  1. <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;">(</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">1</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> to </span><span style="color: rgb(204, 0, 204); font-size: 8pt;">5</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;">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;">[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;">1</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(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;"> </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;">(Seq(</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;">"B"</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;">"E"</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;">5. </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;">=</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;">2</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(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;"> </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;"> rdd1</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">zip</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;">8. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">res0</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[(Int,</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(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(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;">B</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(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(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">(</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">4</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;">),</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(204, 0, 204); font-size: 8pt;">5</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">E</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, 0, 255); font-size: 12pt;">9. </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;">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;"> rdd2</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">zip</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;">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;">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;">1</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;">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;">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;"> </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;">,</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">4</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;">E</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span><span style="color: rgb(204, 0, 204); font-size: 8pt;">5</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;">12. </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;">13. </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;">sc</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;">makeRDD</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">(Seq(</span></b><b><span style="color: rgb(194, 143, 91); font-size: 8pt;">"A"</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span></b><b><span style="color: rgb(194, 143, 91); font-size: 8pt;">"B"</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span></b><b><span style="color: rgb(194, 143, 91); font-size: 8pt;">"C"</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span></b><b><span style="color: rgb(194, 143, 91); font-size: 8pt;">"D"</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">,</span></b><b><span style="color: rgb(194, 143, 91); font-size: 8pt;">"E"</span></b><b><span style="color: rgb(0, 170, 0); font-size: 8pt;">),</span></b><b><span style="color: rgb(204, 0, 204); font-size: 8pt;">3</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;">14. </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;">=</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;">5</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(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(0, 0, 255); font-size: 12pt;">15. </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;">16. </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;">zip</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;">17. </span><span style="color: rgb(0, 0, 255); font-size: 8pt;">java</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.</span><span style="color: rgb(0, 0, 255); font-size: 8pt;">lang</span><span style="color: rgb(0, 170, 0); font-size: 8pt;">.IllegalArgumentException:</span><span style="color: rgb(0, 0, 255); font-size: 8pt;"> </span><span style="color: rgb(0, 170, 0); font-size: 8pt;">Can</span><span style="color: rgb(194, 143, 91); font-size: 8pt;">'t zip RDDs with unequal numbers of partitions</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div><div style="text-indent: 0em;"><span style="color: rgb(194, 143, 91); font-size: 12pt;">18. </span><span style="color: rgb(194, 143, 91); font-size: 8pt;">//如果两个RDD分区数不同,则抛出异常</span><span style="color: rgb(190, 190, 197); font-size: 10.5pt;"></span></div>
复制代码



没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条