首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么TableResult.collect工作,而Table.collect不工作

为什么TableResult.collect工作,而Table.collect不工作
EN

Stack Overflow用户
提问于 2021-05-15 04:21:41
回答 1查看 85关注 0票数 0

我使用的是Flink 1.13.0,下面是简单的代码片段

代码语言:javascript
复制
import org.apache.flink.table.api.bridge.scala.table2RowDataSet
import org.apache.flink.table.api.{EnvironmentSettings, TableEnvironment}

object HelloFlinkBatchTable {
  def main(args: Array[String]): Unit = {
    val settings = EnvironmentSettings.newInstance().inBatchMode().useBlinkPlanner().build()
    val tenv = TableEnvironment.create(settings)


    val words = tenv.fromValues("hello", "world", "hadoop", "spark", "world").as("word")

    words.collect().foreach(println)

    words.printSchema()

    tenv.createTemporaryView("words", words)

    //collect works on TableResult
    val result = tenv.executeSql("select word from words")
    result.collect()


    //collect doesn't work on the Table
    //ERROR:Table cannot be converted into a DataSet. It is not part of a batch table environment.
    words.collect()

  }
}

我会问为什么TableResult.collect可以工作,而Table.collect却不能工作(错误是:Table cannot be converted into a DataSet. It is not part of a batch table environment.)。我认为我已经在代码中正确地指定了批处理环境。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-17 09:40:39

隐式转换table2RowDataSet实际上是不推荐的,但在一般情况下很难取消隐式转换。

DataSet API即将结束,并将在中期完全集成到TableEnvironmentStreamExecutionEnvironment中。

TableResult.collect是官方和稳定支持的检索结果的方式。其他关联将在Flink 1.14中更新,参见FLINK-22590

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67543236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档