【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战021--DateSet实用API详解021
来源:互联网 发布:淘宝外观设计专利 编辑:程序博客网 时间:2024/06/07 03:22
Flink DateSet定制API详解(Scala版) -002
flatMap
以element为粒度,对element进行1:n的转化。
执行程序:
package code.book.batch.dataset.advance.apiimport org.apache.flink.api.common.functions.FlatMapFunctionimport org.apache.flink.api.scala.{ExecutionEnvironment, _}import org.apache.flink.util.Collectorobject FlatMapFunction001scala { def main(args: Array[String]): Unit = { // 1.设置运行环境,并创造测试数据 val env = ExecutionEnvironment.getExecutionEnvironment val text = env.fromElements("flink vs spark", "buffer vs shuffer") // 2.以element为粒度,将element进行map操作,转化为大写并添加后缀字符串"--##bigdata##" val text2 = text.flatMap(new FlatMapFunction[String, String]() { override def flatMap(s: String, collector: Collector[String]): Unit = { collector.collect(s.toUpperCase() + "--##bigdata##") } }) text2.print() //3.对每句话进行单词切分,一个element可以转化为多个element,这里是一个line可以转化为多个Word //map的只能对element进行1:1转化,而flatMap可以对element进行1:n转化 val text3 = text.flatMap { new FlatMapFunction[String, Array[String]] { override def flatMap(s: String, collector: Collector[Array[String]]): Unit = { val arr: Array[String] = s.toUpperCase().split("\\s+") collector.collect(arr) } } } //显示结果的简单写法 text3.collect().foreach(_.foreach(println(_))) //实际上是先获取Array[String],再从中获取到String text3.collect().foreach(arr => { arr.foreach(token => { println(token) }) }) }}
执行结果:
text2.print()FLINK VS SPARK--##bigdata##BUFFER VS SHUFFER--##bigdata##text3.collect().foreach(_.foreach(println(_)))FLINKVSSPARKBUFFERVSSHUFFLE
filter
以element为粒度,对element进行过滤操作。将满足过滤条件的element组成新的DataSet
执行程序:
package code.book.batch.dataset.advance.apiimport org.apache.flink.api.common.functions.FilterFunctionimport org.apache.flink.api.scala.{ExecutionEnvironment, _}object FilterFunction001scala { def main(args: Array[String]): Unit = { // 1.设置运行环境,并创造测试数据 val env = ExecutionEnvironment.getExecutionEnvironment val text = env.fromElements(2, 4, 7, 8, 9, 6) //2.对DataSet的元素进行过滤,筛选出偶数元素 val text2 = text.filter(new FilterFunction[Int] { override def filter(t: Int): Boolean = { t % 2 == 0 } }) text2.print() //3.对DataSet的元素进行过滤,筛选出大于5的元素 val text3 = text.filter(new FilterFunction[Int] { override def filter(t: Int): Boolean = { t >5 } }) text3.print() }}
执行结果:
text2.print()2486text3.print()7896
阅读全文
0 0
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战021--DateSet实用API详解021
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战001--DateSet实用API详解001
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战002--DateSet实用API详解002
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战003--DateSet实用API详解003
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战004--DateSet实用API详解004
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战005--DateSet实用API详解005
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战006--DateSet实用API详解006
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战007--DateSet实用API详解007
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战008--DateSet实用API详解008
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战009--DateSet实用API详解009
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战010--DateSet实用API详解010
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战011--DateSet实用API详解011
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战012--DateSet实用API详解012
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战013--DateSet实用API详解013
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战014--DateSet实用API详解014
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战015--DateSet实用API详解015
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战016--DateSet实用API详解016
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战017--DateSet实用API详解017
- CentOS7 rabbitmq 安装
- jmeter录制脚本(badboy+jmeter)
- 读懂UML类图
- APP调用微信授权登录之服务端开发
- 软件无线电的射频前端
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战021--DateSet实用API详解021
- 使用 Nginx 和 GeoIP 模块来处理不同国家的访问2
- iOS设备型号
- 两段锁协议
- httpClient学习整理
- 微信H5房卡牛牛开发5个Java开发人员必须注重HTML5的理由
- 4. Dubbo原理解析-代理之接口定义
- Spring Cloud在国内中小型公司能用起来吗?
- MySql安装及其在QT中的使用