A Table可以转换成a DataStream或DataSet。通过这种方式,可以在Table API或SQL查询的结果上运行自定义的DataStream或DataSet程序

将表转换为DataStream

有两种模式可以将 Table转换为DataStream:

1:Append Mode

将一个表附加到流上

2:Retract Mode

将表转换为流

语法格式:

// get TableEnvironment.
// registration of a DataSet is equivalent
// ge val tableEnv = TableEnvironment.getTableEnvironment(env) // Table with two fields (String name, Integer age)
val table: Table = ... // convert the Table into an append DataStream of Row
val dsRow: DataStream[Row] = tableEnv.toAppendStream[Row](table) // convert the Table into an append DataStream of Tuple2[String, Int]
val dsTuple: DataStream[(String, Int)] dsTuple =
tableEnv.toAppendStream[(String, Int)](table) // convert the Table into a retract DataStream of Row.
// A retract stream of type X is a DataStream[(Boolean, X)].
// The boolean field indicates the type of the change.
// True is INSERT, false is DELETE.
val retractStream: DataStream[(Boolean, Row)] = tableEnv.toRetractStream[Row](table)

例子:

object TableTODataSet_DataStream {
def main(args: Array[String]): Unit = {
//构造数据,转换为table
val data = List(
Peoject(1L, 1, "Hello"),
Peoject(2L, 2, "Hello"),
Peoject(3L, 3, "Hello"),
Peoject(4L, 4, "Hello"),
Peoject(5L, 5, "Hello"),
Peoject(6L, 6, "Hello"),
Peoject(7L, 7, "Hello World"),
Peoject(8L, 8, "Hello World"),
Peoject(8L, 8, "Hello World"),
Peoject(20L, 20, "Hello World")) val env = StreamExecutionEnvironment.getExecutionEnvironment
env.setParallelism(1)
val tEnv = TableEnvironment.getTableEnvironment(env)
val stream = env.fromCollection(data)
val table: Table = tEnv.fromDataStream(stream)
//TODO 将table转换为DataStream----将一个表附加到流上Append Mode
val appendStream: DataStream[Peoject] = tEnv.toAppendStream[Peoject](table)
//TODO 将表转换为流Retract Mode true代表添加消息,false代表撤销消息
val retractStream: DataStream[(Boolean, Peoject)] = tEnv.toRetractStream[Peoject](table)
retractStream.print()
env.execute() }
} case class Peoject(user: Long, index: Int, content: String)

将表转换为DataSet

语法格式:

// get TableEnvironment
// registration of a DataSet is equivalent
val tableEnv = TableEnvironment.getTableEnvironment(env) // Table with two fields (String name, Integer age)
val table: Table = ... // convert the Table into a DataSet of Row
val dsRow: DataSet[Row] = tableEnv.toDataSet[Row](table) // convert the Table into a DataSet of Tuple2[String, Int]
val dsTuple: DataSet[(String, Int)] = tableEnv.toDataSet[(String, Int)](table)

例子:

case class Peoject(user: Long, index: Int, content: String)

object TableTODataSet{
def main(args: Array[String]): Unit = { //构造数据,转换为table
val data = List(
Peoject(1L, 1, "Hello"),
Peoject(2L, 2, "Hello"),
Peoject(3L, 3, "Hello"),
Peoject(4L, 4, "Hello"),
Peoject(5L, 5, "Hello"),
Peoject(6L, 6, "Hello"),
Peoject(7L, 7, "Hello World"),
Peoject(8L, 8, "Hello World"),
Peoject(8L, 8, "Hello World"),
Peoject(20L, 20, "Hello World"))
//初始化环境,加载table数据
val env = ExecutionEnvironment.getExecutionEnvironment
env.setParallelism(1)
val tableEnvironment = TableEnvironment.getTableEnvironment(env)
val collection: DataSet[Peoject] = env.fromCollection(data)
val table: Table = tableEnvironment.fromDataSet(collection)
//TODO 将table转换为dataSet
val toDataSet: DataSet[Peoject] = tableEnvironment.toDataSet[Peoject](table)
toDataSet.print()
// env.execute()
}
}

Flink--将表转换为DataStream或DataSet的更多相关文章

  1. Flink--Table和DataStream和DataSet的集成

    将DataStream或DataSet转换为表格 在上面的例子讲解中,直接使用的是:registerTableSource注册表 对于flink来说,还有更灵活的方式:比如直接注册DataStream ...

  2. 将Json数据转换为ADO.NET DataSet对象

    Json数据转换为ADO.NET DataSet其实方法有很多,Newtonsoft.Json也提供了DataSet的Converter用以转换Json数据.但是有些情况下DataSet Conver ...

  3. Oracle 将普通表转换为分区表

    DB:11.2.0.30 将普通表转换为区分表 一.利用原表重建分区表SQL>create table yoon ( id number primary key ,time date ); Ta ...

  4. Oracle数据表转换为Shapefile(二)

    在上一篇博文<Oracle数据表转换为Shapefile(一)>中详细描述了一种基于Oracle数据表生产Shapefile的技术方法,本文同样以详细图解的方式描述一种更便捷的方法来完成同 ...

  5. Oracle数据表转换为Shapefile(一)

    严格来说,文章标题中的“转换”并不完全合适.本文的主要内容是基于Oracle数据表的数据来生产出Shapefile文件.进行该工作的一个前提条件是:Oracle数据表中包含坐标数值字段,一般来说就是x ...

  6. lintcode-106-排序列表转换为二分查找树

    106-排序列表转换为二分查找树 给出一个所有元素以升序排序的单链表,将它转换成一棵高度平衡的二分查找树 样例 标签 递归 链表 思路 类似于二分查找,每次将链表二分,中间节点作为根节点,在建立左子树 ...

  7. 用java语言将数据库中的数据表转换为xml文件的通用程序(细化)

    转自:https://www.cnblogs.com/wudage/p/7650685.html 总是在网络上copy别人的源代码,今天我也贴出自己今天写的源码,相信这个程序会对大家在平时的工作中需要 ...

  8. Apache Flink 1.12.0 正式发布,DataSet API 将被弃用,真正的流批一体

    Apache Flink 1.12.0 正式发布 Apache Flink 社区很荣幸地宣布 Flink 1.12.0 版本正式发布!近 300 位贡献者参与了 Flink 1.12.0 的开发,提交 ...

  9. 大数据开发-Flink-数据流DataStream和DataSet

    Flink主要用来处理数据流,所以从抽象上来看就是对数据流的处理,正如前面大数据开发-Flink-体系结构 && 运行架构提到写Flink程序实际上就是在写DataSource.Tra ...

随机推荐

  1. 单点登录SSO的原理及实现方式总结

      核心思想   用户信息的集中存储(全局Cooike.集中式Session.Json Web Token.Redis缓存服务器.自定义SSO服务器)   认证(Filter中执行)   登出(不同站 ...

  2. LuoGu P1004 方格取数

    题目传送门 一开始这个题我是不会的(沙华弱DP啊QwQ),后来考完试我一想,这东西怎么和数字三角形那题这么像啊? 都是自上而下,只能向下或者向右,求一个max 那么...这不就是个走两遍的数字矩阵嘛 ...

  3. Confluence 6 访问你的宏正文(body)

    请查看 Writing User Macros 页面获得有关如何写用户宏的介绍. 这个页面介绍你可以在用户宏中可以使用的的代码信息. 访问你的宏正文(body) 在你用户宏模板中的 $body 对象可 ...

  4. py4测试题

    1.8<<2等于? 32 2.通过内置函数计算5除以2的余数 print(divmod(5,2))------>1 3.s=[1,"h",2,"e&qu ...

  5. ubuntu MySQL的安装

    https://i.cnblogs.com/EditPosts.aspx?opt=1 https://juejin.im/entry/5adb5deff265da0b9d77cb3b MySQL Co ...

  6. collections模块

    collections模块在内置数据类型(dict.list.set.tuple)的基础上,还提供了几个额外的数据类型:ChainMap.Counter.deque.defaultdict.named ...

  7. ZenMap扫描笔记

    1.软件界面如下,ZenMap 扫描工具是kali linu中对WEB渗透扫描的一款工具

  8. C#概念总结(二)

    1.C#的方法:<access Specifier>  <Return Type>< Method Name>(Parmeter list){     method ...

  9. WinHex数据恢复笔记(二)

    续写上次笔记: 1.Winhex数据恢复软件的界面上的所有功能已经介绍了一遍,最主要的还是编程恢复的能力. 今天主要看看记事本的编辑恢复及其相关的一些问题,记事本的 编辑值是ASCII值,所以没有文件 ...

  10. 把tomcat服务器配置为windows服务的方法

    转自:http://ykyfendou.iteye.com/blog/2032916 使用tomcat开发的项目,我们把项目交付给客户的时候,客户都不希望在每次开机的时候都要启动一下tomcat服务器 ...