繁体   English   中英

Flink Table API 无法将 DataSet 转换为 DataStream

[英]Flink Table API not able to convert DataSet to DataStream

我正在使用使用 Java 的 Flink Table API,我想将 DataSet 转换为 DataStream ....以下是我的代码:

TableEnvironment tableEnvironment=new TableEnvironment();
Table tab1=table.where("related_value < 2014").select("related_value,ref_id");
DataSet<MyClass>ds2=tableEnvironment.toDataSet(tab1, MyClass.class);
DataStream<MyClass> d=tableEnvironment.toDataStream(tab1, MyClass.class);

但是当我尝试执行这个程序时,它抛出以下异常:

org.apache.flink.api.table.ExpressionException:JavaStreamingTranslator 的根无效:Root(ArraySeq((related_value,Double), (ref_id,String)))。 您是否尝试将基于 DataSet 的表转换为 DataStream,反之亦然? 我想知道我们如何使用 Flink Table API 将 DataSet 转换为 DataStream??

我想知道的另一件事是,对于模式匹配,有可用的 Flink CEP 库。但是使用 Flink Table API 进行模式匹配是否可行?

Flink 的 Table API 并非旨在将DataSet转换为DataStream ,反之亦然。 使用 Table API 无法做到这一点,目前 Flink 也没有其他方法可以做到这一点。

统一DataStreamDataSet API(将批处理作为流处理的一种特殊情况,即作为有界流处理)是 Flink 的长期路线图。

使用TableEnvironment时不能转换为 DataStream API,必须创建一个StreamTableEnvironment才能从表转换为 DataStream,如下所示:

final EnvironmentSettings fsSettings = EnvironmentSettings.newInstance().useBlinkPlanner().inStreamingMode().build();
final StreamTableEnvironment fsTableEnv = StreamTableEnvironment.create(configuration, fsSettings);
DataStream<String> finalRes = fsTableEnv.toAppendStream(tableNameHere, MyClass.class);

希望能以某种方式帮助你。

亲切的问候!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM