开发者社区 问答 正文

请教个问题,tableEnvironment.registerDataStream(table)为什么和tableEnvironment.registerTable(table)一样也能接受一个table参数?

转自钉钉群21789141:请教个问题,tableEnvironment.registerDataStream(table)为什么和tableEnvironment.registerTable(table)一样也能接受一个table参数?
下图的代码编译是通过的。
image
tableEnvironment.registerDataStream()我理解应该传入DataStream而不是table。。

展开
收起
赵慧@ApacheFlink中文社区 2018-10-18 14:48:43 3154 分享 版权
1 条回答
写回答
取消 提交回答
  • 星灿:scala的隐式类型转换

    问: 隐式转换导致虽然编译是通过的,但是tableEnvironment.registerDataStream(table)并不能执行成功,会报错table is not an append-only table...所以这两种api调用并不等价。不清楚原因是什么。
    可能尝试隐式地把table转成append only stream。其实并不行。table业务上是retract的。

    答: 是的,默认是转成append table。你可以查看一下o.a.f.table.api.scala.package.scala文件

    韩非:Flink现有版本可能有点问题,Blink开源后,应该没什么大的问题

    Jerome:blink只是一个分支,不是之前大沙还是建议用flink的主干吗

    个人觉得flink代码的成熟性还是蛮差的,相对于spark,很多逻辑都是因为源码没有做异常处理导致

    韩非: 同意。个人觉得Flink api加上Scala隐式转换,坑点较多。官方api文档举得例子比较简单,反映不出这些坑点。

    2019-07-17 23:09:16
    赞同 展开评论
问答地址: