spark常用RDD算子 - flatMapToPair
在flatMap算子的基礎上,將結果變成 (a,1)的形式
flatMap算子:
有時候,我們希望對某個元素生成多個元素,實現該功能的操作叫作 flatMap()?
faltMap的函數應用于每一個元素,對于每一個元素返回的是多個元素組成的迭代器
例如我們將數據切分為單詞 ,個人理解就是數據打散
flatMapToPair 示例如下
1 準備一個文本文件 sample_2.txt,內容如下
hadoop hive spark flume
hdfs spark zookeeper storm
flume hue flume hdfs
spark hive hdfs spark
JavaRDD<String> stringJavaRDD = javaSparkContext.textFile("file:///E:/sample_2.txt");
JavaPairRDD<String, Integer> stringIntegerJavaPairRDD = stringJavaRDD.flatMapToPair(new PairFlatMapFunction<String, String, Integer>() {@Overridepublic Iterator<Tuple2<String, Integer>> call(String s) throws Exception {String[] split = s.split("\\s+");System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^");System.out.println(Arrays.asList(split));//輸出 [hadoop, hive, spark, flume]System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^");ArrayList<Tuple2<String, Integer>> objects = new ArrayList<>();for (String str : split) {Tuple2<String, Integer> stringIntegerTuple2 = new Tuple2<>(str, 1);objects.add(stringIntegerTuple2);}return objects.iterator();}});System.out.println(stringIntegerJavaPairRDD.collect());//最終flatMapToPair的結果如下
[(hadoop,1), (hive,1), (spark,1), (flume,1), (hdfs,1), (spark,1), (zookeeper,1), (storm,1), (flume,1), (hue,1), (flume,1), (hdfs,1), (spark,1), (hive,1), (hdfs,1), (spark,1)]
?
本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處:https://dhexx.cn/hk/18449.html
如若內容造成侵權/違法違規/事實不符,請聯系我的編程經驗分享網進行投訴反饋,一經查實,立即刪除!