spark RDD算子(二) filter,map ,flatMap
来源:互联网 发布:js登陆界面 编辑:程序博客网 时间:2024/05/17 05:51
作者: 翟开顺
首发:CSDN
先来一张spark快速大数据中的图片进行快速入门,后面有更详细的例子
filter
举例,在F:\sparktest\sample.txt 文件的内容如下
aa bb cc aa aa aa dd dd ee ee ee ee ff aa bb zksee kksee zz zks
我要将包含zks的行的内容给找出来
scala版本
val lines = sc.textFile("F:\\sparktest\\sample.txt").filter(line=>line.contains("zks")) //打印内容 lines.collect().foreach(println(_));-------------输出------------------ff aa bb zksee zz zks
java版本
JavaRDD<String> lines = sc.textFile("F:\\sparktest\\sample.txt"); JavaRDD<String> zksRDD = lines.filter(new Function<String, Boolean>() { @Override public Boolean call(String s) throws Exception { return s.contains("zks"); } }); //打印内容 List<String> zksCollect = zksRDD.collect(); for (String str:zksCollect) { System.out.println(str); }----------------输出-------------------ff aa bb zksee zz zks
map
map() 接收一个函数,把这个函数用于 RDD 中的每个元素,将函数的返回结果作为结果RDD编程 | 31
RDD 中对应元素的值 map是一对一的关系
举例,在F:\sparktest\sample.txt 文件的内容如下
aa bb cc aa aa aa dd dd ee ee ee ee ff aa bb zksee kksee zz zks
把每一行变成一个数组
scala版本
//读取数据scala> val lines = sc.textFile("F:\\sparktest\\sample.txt")//用map,对于每一行数据,按照空格分割成一个一个数组,然后返回的是一对一的关系scala> var mapRDD = lines.map(line => line.split("\\s+"))---------------输出-----------res0: Array[Array[String]] = Array(Array(aa, bb, cc, aa, aa, aa, dd, dd, ee, ee, ee, ee), Array(ff, aa, bb, zks), Array(ee, kks), Array(ee, zz, zks))//读取第一个元素scala> mapRDD.first---输出----res1: Array[String] = Array(aa, bb, cc, aa, aa, aa, dd, dd, ee, ee, ee, ee)
java版本
JavaRDD<Iterable<String>> mapRDD = lines.map(new Function<String, Iterable<String>>() { @Override public Iterable<String> call(String s) throws Exception { String[] split = s.split("\\s+"); return Arrays.asList(split); } }); //读取第一个元素 System.out.println(mapRDD.first()); ---------------输出------------- [aa, bb, cc, aa, aa, aa, dd, dd, ee, ee, ee, ee]
flatMap
有时候,我们希望对某个元素生成多个元素,实现该功能的操作叫作 flatMap()
faltMap的函数应用于每一个元素,对于每一个元素返回的是多个元素组成的迭代器(想要了解更多,请参考scala的flatMap和map用法)
例如我们将数据切分为单词
scala版本
scala> val lines = sc.textFile("F:\\sparktest\\sample.txt") scala> val flatMapRDD = lines.flatMap(line=>line.split("\\s")) scala> flatMapRDD.first() ---输出----res0: String = aa
java版本,spark2.0以下
JavaRDD<String> lines = sc.textFile("F:\\sparktest\\sample.txt"); JavaRDD<String> flatMapRDD = lines.flatMap(new FlatMapFunction<String, String>() { @Override public Iterable<String> call(String s) throws Exception { String[] split = s.split("\\s+"); return Arrays.asList(split); } }); //输出第一个 System.out.println(flatMapRDD.first());------------输出----------aa
java版本,spark2.0以上
spark2.0以上,对flatMap的方法有所修改,就是flatMap中的Iterator和Iteratable的小区别
JavaRDD<String> flatMapRDD = lines.flatMap(new FlatMapFunction<String, String>() { @Override public Iterator<String> call(String s) throws Exception { String[] split = s.split("\\s+"); return Arrays.asList(split).iterator(); } });
2 0
- spark RDD算子(二) filter,map ,flatMap
- spark RDD的map和flatmap
- Spark算子[04]:map,flatMap,mapToPair,flatMapToPair
- Spark RDD/Core 编程 API入门系列 之rdd案例(map、filter、flatMap、groupByKey、reduceByKey、join、cogroupy等)(四)
- spark--transform算子--flatMap
- Spark RDD中Transformation的map、flatMap、mapPartitions、glom详解
- spark RDD操作map与flatmap的区别
- 3.2 Spark RDD 基本转换操作1-map、flatMap、distinct
- Spark RDD算子【二】coalesce 和 repartition
- spark简单操作——map flatmap filter distinct
- map,reduce,filter,flatmap
- “戏”说Spark-Spark核心-RDD转换操作算子详解(二)
- spark RDD操作算子详解(汇总)
- spark RDD算子学习(基本命令)
- spark rdd 算子
- spark中的RDD算子
- Spark RDD算子介绍
- Spark RDD算子介绍
- 异常
- C#使用Ado.Net读写数据库
- 信息安全——RSA密码系统的实现
- 关于split的使用
- 【Redis】 手工搭建集群
- spark RDD算子(二) filter,map ,flatMap
- 修改Maven的本地仓库路径
- Android自定义布局仿京东详情页,上下翻页
- 排序算法
- 滑动效果
- 【计算机网络】考完总结分析
- 动态规划练习题-21(三角最佳路径)
- 图模型学习概述
- 附录:约瑟夫环代码