摘要: 这个很简单,就是取rdd中的唯一值val data1 = sc.parallelize(List(1,2,3,2,3,2,2))data1.distinct().collect输出123注意,可以调整执行并行度即data1.distinct().collect这样就会按三个partition进行并行... 阅读全文
posted @ 2015-05-11 16:25 HarkLee 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 用来找到两个rdd的交集,注意,最终的new rdd的分区数量取决于两个rdd中的最大分区数量。测试一下:val data1 = sc.parallelize(1 to 20,1)val data2 = sc.parallelize(1 to 5,2)val data3 = data1.inters... 阅读全文
posted @ 2015-05-11 16:20 HarkLee 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 我理解,就是将RDD指定的RDD进行合并。 同时保留合并数据的分区。val data1 = sc.parallelize(1 to 20)data1.partitions.lengthval data2 = sc.parallelize(25 to 30)data2.partitions.lengt... 阅读全文
posted @ 2015-05-11 16:13 HarkLee 阅读(158) 评论(0) 推荐(0) 编辑
摘要: sample是在数据源取样。val data = sc.parallelize(1 to 20)data.sample(true,0.4).collectsample第一个参数表示是否是重复抽样,如果是true,则抽象的结果可能会有重复的数字。而false代表抽样的结果是没有重复的。sample第二... 阅读全文
posted @ 2015-05-11 15:48 HarkLee 阅读(510) 评论(0) 推荐(0) 编辑
摘要: 区别在于sc.map是将RDD下的所有行数据统计处理。而sc.mapPartitions是按RDD分区进行数据统计处理。测试一下:val data = sc.parallelize(1 to 6,3)def mapTest(param1:Int):Int={ println("by map,data... 阅读全文
posted @ 2015-05-11 15:38 HarkLee 阅读(1129) 评论(0) 推荐(0) 编辑
摘要: val data1 = sc.wholeTextFiles("/opt/test")val data = sc.textFile("/opt/test/")使用textFile时,它的partition的数量是与文件夹下的文件数量相关,一个文件就是一个partition。wholeTextFiles... 阅读全文
posted @ 2015-05-11 11:42 HarkLee 阅读(2515) 评论(0) 推荐(0) 编辑