开发者社区> 问答> 正文

flink1.11.0 执行sqlQuery提示NullPointException

大家好: 我正在为公司之前基于flink1.10的网关升级flink版本到1.11,用的hive目录,建表后,执行sqlQuery方法提示NullPointException,希望给出排错建议,具体报错信息如下: 引起:java.lang.NullPointerException 在 java.util.Objects.requireNonNull(Objects.java:203) 在 org.apache.calcite.rel.metadata.RelMetadataQuery. (RelMetadataQuery.java:141) 在 org.apache.calcite.rel.metadata.RelMetadataQuery. (RelMetadataQuery.java:106) 在 org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery. (FlinkRelMetadataQuery.java:73) 在 org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.instance(FlinkRelMetadataQuery.java:52) 在 org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:39) 在 org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:38) 在 org.apache.calcite.plan.RelOptCluster.getMetadataQuery(RelOptCluster.java:178) 在 org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:118) 在 org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:111) 在 org.apache.calcite.rel.core.RelFactories$ProjectFactoryImpl.createProject(RelFactories.java:180) 在 org.apache.calcite.tools.RelBuilder.project_(RelBuilder.java:1462) 在 org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:1256) 在 org.apache.calcite.tools.RelBuilder.projectNamed(RelBuilder.java:1521) 在 org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectList(SqlToRelConverter.java:4125) 在 org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:685) 在 org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:642) 在 org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3345) 在 org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:568) 在 org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org$apache$flink$table$planner$calcite$FlinkPlannerImpl$$rel(FlinkPlannerImpl.scala:164) 在 org.apache.flink.table.planner.calcite.FlinkPlannerImpl.rel(FlinkPlannerImpl.scala:151) 在 org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNodes(SqlExprToRexConverterImpl.java:81) 在 org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNode(SqlExprToRexConverterImpl.java:73) 在 org.apache.flink.table.planner.delegation.ParserImpl.parseSqlExpression(ParserImpl.java:93) 在 org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolveExpressionDataType(CatalogTableSchemaResolver.java:119) 在 org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolve(CatalogTableSchemaResolver.java:83) 在 org.apache.flink.table.catalog.CatalogManager.resolveTableSchema(CatalogManager.java:380) 在 org.apache.flink.table.catalog.CatalogManager.getPermanentTable(CatalogManager.java:408) 在 org.apache.flink.table.catalog.CatalogManager.getTable(CatalogManager.java:375) 在 org.apache.flink.table.planner.catalog.DatabaseCalciteSchema.getTable(DatabaseCalciteSchema.java:75) 在 org.apache.calcite.jdbc.SimpleCalciteSchema.getImplicitTable(SimpleCalciteSchema.java:83) 在 org.apache.calcite.jdbc.CalciteSchema.getTable(CalciteSchema.java:289) 在 org.apache.calcite.sql.validate.EmptyScope.resolve_(EmptyScope.java:143) 在 org.apache.calcite.sql.validate.EmptyScope.resolveTable(EmptyScope.java:99) 在 org.apache.calcite.sql.validate.DelegatingScope.resolveTable(DelegatingScope.java:203) 在 org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:112) 在 org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:184) 在 org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) 在 org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) 在 org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) 在 org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3256) 在 org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3238) 在 org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3510) 在 org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60) 在 org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) 在 org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) 在 org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) 在 org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:232) 在 org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1059) 在 org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:766) 在 org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org$apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:141)*来自志愿者整理的flink邮件归档

展开
收起
小阿怪 2021-12-07 10:07:46 1068 0
1 条回答
写回答
取消 提交回答
  • 这个问题只能说是使用表环境恶化的问题。ververica的网关的模式本质就是多线程。 创建TableEnvironment和使用TableEnvironment可能不是一个线程,worker线程是被那个的。 简单来说就是: 当session创建的时候,worker thread1会创建一个tableEnvironment, 然后当其他该会话请求来自外部的时候,可能是worker thread2使用该TableEnvironment执行sql。

    实际上这个就是在多线程情况下使用TableEnvironment。不符合TableEnvironment只能在单线程使用的约束。*来自志愿者整理的flink邮件归档

    2021-12-07 11:43:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载