Hi,all:
本人正在为公司之前基于flink1.10的gateway升级flink版本到1.11,用的hive catalog,建表后,执行sqlQuery方法时报NullPointException,希望给出排错建议,具体报错信息如下: Caused by: java.lang.NullPointerException at java.util.Objects.requireNonNull(Objects.java:203) at org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:141) at org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:106) at org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.<init>(FlinkRelMetadataQuery.java:73) at org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.instance(FlinkRelMetadataQuery.java:52) at org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:39) at org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:38) at org.apache.calcite.plan.RelOptCluster.getMetadataQuery(RelOptCluster.java:178) at org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:118) at org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:111) at org.apache.calcite.rel.core.RelFactories$ProjectFactoryImpl.createProject(RelFactories.java:180) at org.apache.calcite.tools.RelBuilder.project_(RelBuilder.java:1462) at org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:1256) at org.apache.calcite.tools.RelBuilder.projectNamed(RelBuilder.java:1521) at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectList(SqlToRelConverter.java:4125) at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:685) at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:642) at org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3345) at org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:568) at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org$apache$flink$table$planner$calcite$FlinkPlannerImpl$$rel(FlinkPlannerImpl.scala:164) at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.rel(FlinkPlannerImpl.scala:151) at org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNodes(SqlExprToRexConverterImpl.java:81) at org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNode(SqlExprToRexConverterImpl.java:73) at org.apache.flink.table.planner.delegation.ParserImpl.parseSqlExpression(ParserImpl.java:93) at org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolveExpressionDataType(CatalogTableSchemaResolver.java:119) at org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolve(CatalogTableSchemaResolver.java:83) at org.apache.flink.table.catalog.CatalogManager.resolveTableSchema(CatalogManager.java:380) at org.apache.flink.table.catalog.CatalogManager.getPermanentTable(CatalogManager.java:408) at org.apache.flink.table.catalog.CatalogManager.getTable(CatalogManager.java:375) at org.apache.flink.table.planner.catalog.DatabaseCalciteSchema.getTable(DatabaseCalciteSchema.java:75) at org.apache.calcite.jdbc.SimpleCalciteSchema.getImplicitTable(SimpleCalciteSchema.java:83) at org.apache.calcite.jdbc.CalciteSchema.getTable(CalciteSchema.java:289) at org.apache.calcite.sql.validate.EmptyScope.resolve_(EmptyScope.java:143) at org.apache.calcite.sql.validate.EmptyScope.resolveTable(EmptyScope.java:99) at org.apache.calcite.sql.validate.DelegatingScope.resolveTable(DelegatingScope.java:203) at org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:112) at org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:184) at org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3256) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3238) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3510) at org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60) at org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:232) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1059) at org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:766) at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org$apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:141) ... 54 more
junbaozhang
|
补充一下,执行的sql如下:
select order_no, order_time from x.ods.ods_binlog_test_trip_create_t_order_1 ________________________________ 发件人: [hidden email] <[hidden email]> 发送时间: 2020年7月27日 18:49 收件人: [hidden email] <[hidden email]> 主题: flink1.11.0 执行sqlQuery时报NullPointException Hi,all: 本人正在为公司之前基于flink1.10的gateway升级flink版本到1.11,用的hive catalog,建表后,执行sqlQuery方法时报NullPointException,希望给出排错建议,具体报错信息如下: Caused by: java.lang.NullPointerException at java.util.Objects.requireNonNull(Objects.java:203) at org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:141) at org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:106) at org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.<init>(FlinkRelMetadataQuery.java:73) at org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.instance(FlinkRelMetadataQuery.java:52) at org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:39) at org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:38) at org.apache.calcite.plan.RelOptCluster.getMetadataQuery(RelOptCluster.java:178) at org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:118) at org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:111) at org.apache.calcite.rel.core.RelFactories$ProjectFactoryImpl.createProject(RelFactories.java:180) at org.apache.calcite.tools.RelBuilder.project_(RelBuilder.java:1462) at org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:1256) at org.apache.calcite.tools.RelBuilder.projectNamed(RelBuilder.java:1521) at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectList(SqlToRelConverter.java:4125) at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:685) at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:642) at org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3345) at org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:568) at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org$apache$flink$table$planner$calcite$FlinkPlannerImpl$$rel(FlinkPlannerImpl.scala:164) at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.rel(FlinkPlannerImpl.scala:151) at org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNodes(SqlExprToRexConverterImpl.java:81) at org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNode(SqlExprToRexConverterImpl.java:73) at org.apache.flink.table.planner.delegation.ParserImpl.parseSqlExpression(ParserImpl.java:93) at org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolveExpressionDataType(CatalogTableSchemaResolver.java:119) at org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolve(CatalogTableSchemaResolver.java:83) at org.apache.flink.table.catalog.CatalogManager.resolveTableSchema(CatalogManager.java:380) at org.apache.flink.table.catalog.CatalogManager.getPermanentTable(CatalogManager.java:408) at org.apache.flink.table.catalog.CatalogManager.getTable(CatalogManager.java:375) at org.apache.flink.table.planner.catalog.DatabaseCalciteSchema.getTable(DatabaseCalciteSchema.java:75) at org.apache.calcite.jdbc.SimpleCalciteSchema.getImplicitTable(SimpleCalciteSchema.java:83) at org.apache.calcite.jdbc.CalciteSchema.getTable(CalciteSchema.java:289) at org.apache.calcite.sql.validate.EmptyScope.resolve_(EmptyScope.java:143) at org.apache.calcite.sql.validate.EmptyScope.resolveTable(EmptyScope.java:99) at org.apache.calcite.sql.validate.DelegatingScope.resolveTable(DelegatingScope.java:203) at org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:112) at org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:184) at org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3256) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3238) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3510) at org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60) at org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:232) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1059) at org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:766) at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org$apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:141) ... 54 more
junbaozhang
|
hi 能给出详细的schema信息吗?
[hidden email] <[hidden email]> 于2020年7月27日周一 下午7:02写道: > 补充一下,执行的sql如下: > > select order_no, order_time from > x.ods.ods_binlog_test_trip_create_t_order_1 > > ________________________________ > 发件人: [hidden email] <[hidden email]> > 发送时间: 2020年7月27日 18:49 > 收件人: [hidden email] <[hidden email]> > 主题: flink1.11.0 执行sqlQuery时报NullPointException > > Hi,all: > 本人正在为公司之前基于flink1.10的gateway升级flink版本到1.11,用的hive > catalog,建表后,执行sqlQuery方法时报NullPointException,希望给出排错建议,具体报错信息如下: > Caused by: java.lang.NullPointerException > at java.util.Objects.requireNonNull(Objects.java:203) > at > org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:141) > at > org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:106) > at > org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.<init>(FlinkRelMetadataQuery.java:73) > at > org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.instance(FlinkRelMetadataQuery.java:52) > at > org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:39) > at > org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:38) > at > org.apache.calcite.plan.RelOptCluster.getMetadataQuery(RelOptCluster.java:178) > at > org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:118) > at > org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:111) > at > org.apache.calcite.rel.core.RelFactories$ProjectFactoryImpl.createProject(RelFactories.java:180) > at org.apache.calcite.tools.RelBuilder.project_(RelBuilder.java:1462) > at org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:1256) > at org.apache.calcite.tools.RelBuilder.projectNamed(RelBuilder.java:1521) > at > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectList(SqlToRelConverter.java:4125) > at > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:685) > at > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:642) > at > org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3345) > at > org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:568) > at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org > $apache$flink$table$planner$calcite$FlinkPlannerImpl$$rel(FlinkPlannerImpl.scala:164) > at > org.apache.flink.table.planner.calcite.FlinkPlannerImpl.rel(FlinkPlannerImpl.scala:151) > at > org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNodes(SqlExprToRexConverterImpl.java:81) > at > org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNode(SqlExprToRexConverterImpl.java:73) > at > org.apache.flink.table.planner.delegation.ParserImpl.parseSqlExpression(ParserImpl.java:93) > at > org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolveExpressionDataType(CatalogTableSchemaResolver.java:119) > at > org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolve(CatalogTableSchemaResolver.java:83) > at > org.apache.flink.table.catalog.CatalogManager.resolveTableSchema(CatalogManager.java:380) > at > org.apache.flink.table.catalog.CatalogManager.getPermanentTable(CatalogManager.java:408) > at > org.apache.flink.table.catalog.CatalogManager.getTable(CatalogManager.java:375) > at > org.apache.flink.table.planner.catalog.DatabaseCalciteSchema.getTable(DatabaseCalciteSchema.java:75) > at > org.apache.calcite.jdbc.SimpleCalciteSchema.getImplicitTable(SimpleCalciteSchema.java:83) > at org.apache.calcite.jdbc.CalciteSchema.getTable(CalciteSchema.java:289) > at > org.apache.calcite.sql.validate.EmptyScope.resolve_(EmptyScope.java:143) > at > org.apache.calcite.sql.validate.EmptyScope.resolveTable(EmptyScope.java:99) > at > org.apache.calcite.sql.validate.DelegatingScope.resolveTable(DelegatingScope.java:203) > at > org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:112) > at > org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:184) > at > org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3256) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3238) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3510) > at > org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60) > at > org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) > at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:232) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1059) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:766) > at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org > $apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:141) > ... 54 more > |
你们是否在多线程环境下使用 TableEnvironment ?
TableEnvironment 不是线程安全的,多线程情况使用可能出现一些莫名其妙的问题。 godfrey he <[hidden email]> 于2020年7月28日周二 上午9:55写道: > hi 能给出详细的schema信息吗? > > [hidden email] <[hidden email]> 于2020年7月27日周一 > 下午7:02写道: > >> 补充一下,执行的sql如下: >> >> select order_no, order_time from >> x.ods.ods_binlog_test_trip_create_t_order_1 >> >> ________________________________ >> 发件人: [hidden email] <[hidden email]> >> 发送时间: 2020年7月27日 18:49 >> 收件人: [hidden email] <[hidden email]> >> 主题: flink1.11.0 执行sqlQuery时报NullPointException >> >> Hi,all: >> 本人正在为公司之前基于flink1.10的gateway升级flink版本到1.11,用的hive >> catalog,建表后,执行sqlQuery方法时报NullPointException,希望给出排错建议,具体报错信息如下: >> Caused by: java.lang.NullPointerException >> at java.util.Objects.requireNonNull(Objects.java:203) >> at >> org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:141) >> at >> org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:106) >> at >> org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.<init>(FlinkRelMetadataQuery.java:73) >> at >> org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.instance(FlinkRelMetadataQuery.java:52) >> at >> org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:39) >> at >> org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:38) >> at >> org.apache.calcite.plan.RelOptCluster.getMetadataQuery(RelOptCluster.java:178) >> at >> org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:118) >> at >> org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:111) >> at >> org.apache.calcite.rel.core.RelFactories$ProjectFactoryImpl.createProject(RelFactories.java:180) >> at org.apache.calcite.tools.RelBuilder.project_(RelBuilder.java:1462) >> at org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:1256) >> at >> org.apache.calcite.tools.RelBuilder.projectNamed(RelBuilder.java:1521) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectList(SqlToRelConverter.java:4125) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:685) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:642) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3345) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:568) >> at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org >> $apache$flink$table$planner$calcite$FlinkPlannerImpl$$rel(FlinkPlannerImpl.scala:164) >> at >> org.apache.flink.table.planner.calcite.FlinkPlannerImpl.rel(FlinkPlannerImpl.scala:151) >> at >> org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNodes(SqlExprToRexConverterImpl.java:81) >> at >> org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNode(SqlExprToRexConverterImpl.java:73) >> at >> org.apache.flink.table.planner.delegation.ParserImpl.parseSqlExpression(ParserImpl.java:93) >> at >> org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolveExpressionDataType(CatalogTableSchemaResolver.java:119) >> at >> org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolve(CatalogTableSchemaResolver.java:83) >> at >> org.apache.flink.table.catalog.CatalogManager.resolveTableSchema(CatalogManager.java:380) >> at >> org.apache.flink.table.catalog.CatalogManager.getPermanentTable(CatalogManager.java:408) >> at >> org.apache.flink.table.catalog.CatalogManager.getTable(CatalogManager.java:375) >> at >> org.apache.flink.table.planner.catalog.DatabaseCalciteSchema.getTable(DatabaseCalciteSchema.java:75) >> at >> org.apache.calcite.jdbc.SimpleCalciteSchema.getImplicitTable(SimpleCalciteSchema.java:83) >> at >> org.apache.calcite.jdbc.CalciteSchema.getTable(CalciteSchema.java:289) >> at >> org.apache.calcite.sql.validate.EmptyScope.resolve_(EmptyScope.java:143) >> at >> org.apache.calcite.sql.validate.EmptyScope.resolveTable(EmptyScope.java:99) >> at >> org.apache.calcite.sql.validate.DelegatingScope.resolveTable(DelegatingScope.java:203) >> at >> org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:112) >> at >> org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:184) >> at >> org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3256) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3238) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3510) >> at >> org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60) >> at >> org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) >> at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:232) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1059) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:766) >> at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org >> $apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:141) >> ... 54 more >> > |
In reply to this post by godfrey he
schema信息如下:
CREATE TABLE x.ods.ods_binlog_test_trip_create_t_order_1 ( _type STRING, order_no STRING, order_time STRING, dt as TO_TIMESTAMP(order_time), proctime as PROCTIME(), WATERMARK FOR dt AS dt - INTERVAL '5' SECOND ) WITH ( 'connector.type' = 'kafka', 'connector.properties.bootstrap.servers' = '*****', 'connector.properties.zookeeper.connect' = '*****', 'connector.version' = 'universal', 'format.type' = 'json', 'connector.properties.group.id' = 'testGroup', 'connector.startup-mode' = 'group-offsets', 'connector.topic' = 'ods-test_trip_create-t_order' ) ________________________________ 发件人: godfrey he <[hidden email]> 发送时间: 2020年7月28日 9:55 收件人: user-zh <[hidden email]> 主题: Re: flink1.11.0 执行sqlQuery时报NullPointException hi 能给出详细的schema信息吗? [hidden email] <[hidden email]> 于2020年7月27日周一 下午7:02写道: > 补充一下,执行的sql如下: > > select order_no, order_time from > x.ods.ods_binlog_test_trip_create_t_order_1 > > ________________________________ > 发件人: [hidden email] <[hidden email]> > 发送时间: 2020年7月27日 18:49 > 收件人: [hidden email] <[hidden email]> > 主题: flink1.11.0 执行sqlQuery时报NullPointException > > Hi,all: > 本人正在为公司之前基于flink1.10的gateway升级flink版本到1.11,用的hive > catalog,建表后,执行sqlQuery方法时报NullPointException,希望给出排错建议,具体报错信息如下: > Caused by: java.lang.NullPointerException > at java.util.Objects.requireNonNull(Objects.java:203) > at > org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:141) > at > org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:106) > at > org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.<init>(FlinkRelMetadataQuery.java:73) > at > org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.instance(FlinkRelMetadataQuery.java:52) > at > org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:39) > at > org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:38) > at > org.apache.calcite.plan.RelOptCluster.getMetadataQuery(RelOptCluster.java:178) > at > org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:118) > at > org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:111) > at > org.apache.calcite.rel.core.RelFactories$ProjectFactoryImpl.createProject(RelFactories.java:180) > at org.apache.calcite.tools.RelBuilder.project_(RelBuilder.java:1462) > at org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:1256) > at org.apache.calcite.tools.RelBuilder.projectNamed(RelBuilder.java:1521) > at > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectList(SqlToRelConverter.java:4125) > at > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:685) > at > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:642) > at > org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3345) > at > org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:568) > at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org > $apache$flink$table$planner$calcite$FlinkPlannerImpl$$rel(FlinkPlannerImpl.scala:164) > at > org.apache.flink.table.planner.calcite.FlinkPlannerImpl.rel(FlinkPlannerImpl.scala:151) > at > org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNodes(SqlExprToRexConverterImpl.java:81) > at > org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNode(SqlExprToRexConverterImpl.java:73) > at > org.apache.flink.table.planner.delegation.ParserImpl.parseSqlExpression(ParserImpl.java:93) > at > org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolveExpressionDataType(CatalogTableSchemaResolver.java:119) > at > org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolve(CatalogTableSchemaResolver.java:83) > at > org.apache.flink.table.catalog.CatalogManager.resolveTableSchema(CatalogManager.java:380) > at > org.apache.flink.table.catalog.CatalogManager.getPermanentTable(CatalogManager.java:408) > at > org.apache.flink.table.catalog.CatalogManager.getTable(CatalogManager.java:375) > at > org.apache.flink.table.planner.catalog.DatabaseCalciteSchema.getTable(DatabaseCalciteSchema.java:75) > at > org.apache.calcite.jdbc.SimpleCalciteSchema.getImplicitTable(SimpleCalciteSchema.java:83) > at org.apache.calcite.jdbc.CalciteSchema.getTable(CalciteSchema.java:289) > at > org.apache.calcite.sql.validate.EmptyScope.resolve_(EmptyScope.java:143) > at > org.apache.calcite.sql.validate.EmptyScope.resolveTable(EmptyScope.java:99) > at > org.apache.calcite.sql.validate.DelegatingScope.resolveTable(DelegatingScope.java:203) > at > org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:112) > at > org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:184) > at > org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3256) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3238) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3510) > at > org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60) > at > org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) > at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:232) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1059) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:766) > at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org > $apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:141) > ... 54 more >
junbaozhang
|
In reply to this post by godfrey he
不是多线程同时操作一个tableEnvironment,每执行一次都会创建一个TableEnvironment
________________________________ 发件人: godfrey he <[hidden email]> 发送时间: 2020年7月28日 9:58 收件人: user-zh <[hidden email]> 主题: Re: flink1.11.0 执行sqlQuery时报NullPointException 你们是否在多线程环境下使用 TableEnvironment ? TableEnvironment 不是线程安全的,多线程情况使用可能出现一些莫名其妙的问题。 godfrey he <[hidden email]> 于2020年7月28日周二 上午9:55写道: > hi 能给出详细的schema信息吗? > > [hidden email] <[hidden email]> 于2020年7月27日周一 > 下午7:02写道: > >> 补充一下,执行的sql如下: >> >> select order_no, order_time from >> x.ods.ods_binlog_test_trip_create_t_order_1 >> >> ________________________________ >> 发件人: [hidden email] <[hidden email]> >> 发送时间: 2020年7月27日 18:49 >> 收件人: [hidden email] <[hidden email]> >> 主题: flink1.11.0 执行sqlQuery时报NullPointException >> >> Hi,all: >> 本人正在为公司之前基于flink1.10的gateway升级flink版本到1.11,用的hive >> catalog,建表后,执行sqlQuery方法时报NullPointException,希望给出排错建议,具体报错信息如下: >> Caused by: java.lang.NullPointerException >> at java.util.Objects.requireNonNull(Objects.java:203) >> at >> org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:141) >> at >> org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:106) >> at >> org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.<init>(FlinkRelMetadataQuery.java:73) >> at >> org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.instance(FlinkRelMetadataQuery.java:52) >> at >> org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:39) >> at >> org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:38) >> at >> org.apache.calcite.plan.RelOptCluster.getMetadataQuery(RelOptCluster.java:178) >> at >> org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:118) >> at >> org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:111) >> at >> org.apache.calcite.rel.core.RelFactories$ProjectFactoryImpl.createProject(RelFactories.java:180) >> at org.apache.calcite.tools.RelBuilder.project_(RelBuilder.java:1462) >> at org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:1256) >> at >> org.apache.calcite.tools.RelBuilder.projectNamed(RelBuilder.java:1521) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectList(SqlToRelConverter.java:4125) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:685) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:642) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3345) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:568) >> at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org >> $apache$flink$table$planner$calcite$FlinkPlannerImpl$$rel(FlinkPlannerImpl.scala:164) >> at >> org.apache.flink.table.planner.calcite.FlinkPlannerImpl.rel(FlinkPlannerImpl.scala:151) >> at >> org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNodes(SqlExprToRexConverterImpl.java:81) >> at >> org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNode(SqlExprToRexConverterImpl.java:73) >> at >> org.apache.flink.table.planner.delegation.ParserImpl.parseSqlExpression(ParserImpl.java:93) >> at >> org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolveExpressionDataType(CatalogTableSchemaResolver.java:119) >> at >> org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolve(CatalogTableSchemaResolver.java:83) >> at >> org.apache.flink.table.catalog.CatalogManager.resolveTableSchema(CatalogManager.java:380) >> at >> org.apache.flink.table.catalog.CatalogManager.getPermanentTable(CatalogManager.java:408) >> at >> org.apache.flink.table.catalog.CatalogManager.getTable(CatalogManager.java:375) >> at >> org.apache.flink.table.planner.catalog.DatabaseCalciteSchema.getTable(DatabaseCalciteSchema.java:75) >> at >> org.apache.calcite.jdbc.SimpleCalciteSchema.getImplicitTable(SimpleCalciteSchema.java:83) >> at >> org.apache.calcite.jdbc.CalciteSchema.getTable(CalciteSchema.java:289) >> at >> org.apache.calcite.sql.validate.EmptyScope.resolve_(EmptyScope.java:143) >> at >> org.apache.calcite.sql.validate.EmptyScope.resolveTable(EmptyScope.java:99) >> at >> org.apache.calcite.sql.validate.DelegatingScope.resolveTable(DelegatingScope.java:203) >> at >> org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:112) >> at >> org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:184) >> at >> org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3256) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3238) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3510) >> at >> org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60) >> at >> org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) >> at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:232) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1059) >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:766) >> at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org >> $apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:141) >> ... 54 more >> >
junbaozhang
|
我的怀疑点还是多线程引起的。
你能具体描述一下你们gateway的行为吗? 是一个web server? 另外,你可以在table env执行query前加上 RelMetadataQueryBase.THREAD_PROVIDERS .set(JaninoRelMetadataProvider.of(FlinkDefaultRelMetadataProvider.INSTANCE())); 这句话临时fix。 [hidden email] <[hidden email]> 于2020年7月28日周二 上午11:02写道: > 不是多线程同时操作一个tableEnvironment,每执行一次都会创建一个TableEnvironment > ________________________________ > 发件人: godfrey he <[hidden email]> > 发送时间: 2020年7月28日 9:58 > 收件人: user-zh <[hidden email]> > 主题: Re: flink1.11.0 执行sqlQuery时报NullPointException > > 你们是否在多线程环境下使用 TableEnvironment ? > TableEnvironment 不是线程安全的,多线程情况使用可能出现一些莫名其妙的问题。 > > godfrey he <[hidden email]> 于2020年7月28日周二 上午9:55写道: > > > hi 能给出详细的schema信息吗? > > > > [hidden email] <[hidden email]> 于2020年7月27日周一 > > 下午7:02写道: > > > >> 补充一下,执行的sql如下: > >> > >> select order_no, order_time from > >> x.ods.ods_binlog_test_trip_create_t_order_1 > >> > >> ________________________________ > >> 发件人: [hidden email] <[hidden email]> > >> 发送时间: 2020年7月27日 18:49 > >> 收件人: [hidden email] <[hidden email]> > >> 主题: flink1.11.0 执行sqlQuery时报NullPointException > >> > >> Hi,all: > >> 本人正在为公司之前基于flink1.10的gateway升级flink版本到1.11,用的hive > >> catalog,建表后,执行sqlQuery方法时报NullPointException,希望给出排错建议,具体报错信息如下: > >> Caused by: java.lang.NullPointerException > >> at java.util.Objects.requireNonNull(Objects.java:203) > >> at > >> > org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:141) > >> at > >> > org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:106) > >> at > >> > org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.<init>(FlinkRelMetadataQuery.java:73) > >> at > >> > org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.instance(FlinkRelMetadataQuery.java:52) > >> at > >> > org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:39) > >> at > >> > org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:38) > >> at > >> > org.apache.calcite.plan.RelOptCluster.getMetadataQuery(RelOptCluster.java:178) > >> at > >> > org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:118) > >> at > >> > org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:111) > >> at > >> > org.apache.calcite.rel.core.RelFactories$ProjectFactoryImpl.createProject(RelFactories.java:180) > >> at org.apache.calcite.tools.RelBuilder.project_(RelBuilder.java:1462) > >> at org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:1256) > >> at > >> org.apache.calcite.tools.RelBuilder.projectNamed(RelBuilder.java:1521) > >> at > >> > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectList(SqlToRelConverter.java:4125) > >> at > >> > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:685) > >> at > >> > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:642) > >> at > >> > org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3345) > >> at > >> > org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:568) > >> at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org > >> > $apache$flink$table$planner$calcite$FlinkPlannerImpl$$rel(FlinkPlannerImpl.scala:164) > >> at > >> > org.apache.flink.table.planner.calcite.FlinkPlannerImpl.rel(FlinkPlannerImpl.scala:151) > >> at > >> > org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNodes(SqlExprToRexConverterImpl.java:81) > >> at > >> > org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNode(SqlExprToRexConverterImpl.java:73) > >> at > >> > org.apache.flink.table.planner.delegation.ParserImpl.parseSqlExpression(ParserImpl.java:93) > >> at > >> > org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolveExpressionDataType(CatalogTableSchemaResolver.java:119) > >> at > >> > org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolve(CatalogTableSchemaResolver.java:83) > >> at > >> > org.apache.flink.table.catalog.CatalogManager.resolveTableSchema(CatalogManager.java:380) > >> at > >> > org.apache.flink.table.catalog.CatalogManager.getPermanentTable(CatalogManager.java:408) > >> at > >> > org.apache.flink.table.catalog.CatalogManager.getTable(CatalogManager.java:375) > >> at > >> > org.apache.flink.table.planner.catalog.DatabaseCalciteSchema.getTable(DatabaseCalciteSchema.java:75) > >> at > >> > org.apache.calcite.jdbc.SimpleCalciteSchema.getImplicitTable(SimpleCalciteSchema.java:83) > >> at > >> org.apache.calcite.jdbc.CalciteSchema.getTable(CalciteSchema.java:289) > >> at > >> org.apache.calcite.sql.validate.EmptyScope.resolve_(EmptyScope.java:143) > >> at > >> > org.apache.calcite.sql.validate.EmptyScope.resolveTable(EmptyScope.java:99) > >> at > >> > org.apache.calcite.sql.validate.DelegatingScope.resolveTable(DelegatingScope.java:203) > >> at > >> > org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:112) > >> at > >> > org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:184) > >> at > >> > org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3256) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3238) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3510) > >> at > >> > org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60) > >> at > >> > org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) > >> at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:232) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1059) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:766) > >> at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org > >> > $apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:141) > >> ... 54 more > >> > > > |
gateway就类似于一个web服务,大概流程是建立连接时会初始化一个session,在session里面初始化TableEnvironment,然后根据sql类型做不同的操作,比如select语句会去执行sqlQuery,具体可查看https://github.com/ververica/flink-sql-gateway。
另外,加了RelMetadataQueryBase.THREAD_PROVIDERS .set(JaninoRelMetadataProvider.of(FlinkDefaultRelMetadataProvider.INSTANCE()))后确实不报这个错了。 题外话,个人认为flink不应该将这样的异常抛给用户去解决,除非我去深入研究源码,要不然根本无法搞清楚具体发生了什么,在封装性上还有待改善。 ________________________________ 发件人: godfrey he <[hidden email]> 发送时间: 2020年7月28日 13:55 收件人: user-zh <[hidden email]> 主题: Re: flink1.11.0 执行sqlQuery时报NullPointException 我的怀疑点还是多线程引起的。 你能具体描述一下你们gateway的行为吗? 是一个web server? 另外,你可以在table env执行query前加上 RelMetadataQueryBase.THREAD_PROVIDERS .set(JaninoRelMetadataProvider.of(FlinkDefaultRelMetadataProvider.INSTANCE())); 这句话临时fix。 [hidden email] <[hidden email]> 于2020年7月28日周二 上午11:02写道: > 不是多线程同时操作一个tableEnvironment,每执行一次都会创建一个TableEnvironment > ________________________________ > 发件人: godfrey he <[hidden email]> > 发送时间: 2020年7月28日 9:58 > 收件人: user-zh <[hidden email]> > 主题: Re: flink1.11.0 执行sqlQuery时报NullPointException > > 你们是否在多线程环境下使用 TableEnvironment ? > TableEnvironment 不是线程安全的,多线程情况使用可能出现一些莫名其妙的问题。 > > godfrey he <[hidden email]> 于2020年7月28日周二 上午9:55写道: > > > hi 能给出详细的schema信息吗? > > > > [hidden email] <[hidden email]> 于2020年7月27日周一 > > 下午7:02写道: > > > >> 补充一下,执行的sql如下: > >> > >> select order_no, order_time from > >> x.ods.ods_binlog_test_trip_create_t_order_1 > >> > >> ________________________________ > >> 发件人: [hidden email] <[hidden email]> > >> 发送时间: 2020年7月27日 18:49 > >> 收件人: [hidden email] <[hidden email]> > >> 主题: flink1.11.0 执行sqlQuery时报NullPointException > >> > >> Hi,all: > >> 本人正在为公司之前基于flink1.10的gateway升级flink版本到1.11,用的hive > >> catalog,建表后,执行sqlQuery方法时报NullPointException,希望给出排错建议,具体报错信息如下: > >> Caused by: java.lang.NullPointerException > >> at java.util.Objects.requireNonNull(Objects.java:203) > >> at > >> > org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:141) > >> at > >> > org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:106) > >> at > >> > org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.<init>(FlinkRelMetadataQuery.java:73) > >> at > >> > org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.instance(FlinkRelMetadataQuery.java:52) > >> at > >> > org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:39) > >> at > >> > org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:38) > >> at > >> > org.apache.calcite.plan.RelOptCluster.getMetadataQuery(RelOptCluster.java:178) > >> at > >> > org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:118) > >> at > >> > org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:111) > >> at > >> > org.apache.calcite.rel.core.RelFactories$ProjectFactoryImpl.createProject(RelFactories.java:180) > >> at org.apache.calcite.tools.RelBuilder.project_(RelBuilder.java:1462) > >> at org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:1256) > >> at > >> org.apache.calcite.tools.RelBuilder.projectNamed(RelBuilder.java:1521) > >> at > >> > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectList(SqlToRelConverter.java:4125) > >> at > >> > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:685) > >> at > >> > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:642) > >> at > >> > org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3345) > >> at > >> > org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:568) > >> at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org > >> > $apache$flink$table$planner$calcite$FlinkPlannerImpl$$rel(FlinkPlannerImpl.scala:164) > >> at > >> > org.apache.flink.table.planner.calcite.FlinkPlannerImpl.rel(FlinkPlannerImpl.scala:151) > >> at > >> > org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNodes(SqlExprToRexConverterImpl.java:81) > >> at > >> > org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNode(SqlExprToRexConverterImpl.java:73) > >> at > >> > org.apache.flink.table.planner.delegation.ParserImpl.parseSqlExpression(ParserImpl.java:93) > >> at > >> > org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolveExpressionDataType(CatalogTableSchemaResolver.java:119) > >> at > >> > org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolve(CatalogTableSchemaResolver.java:83) > >> at > >> > org.apache.flink.table.catalog.CatalogManager.resolveTableSchema(CatalogManager.java:380) > >> at > >> > org.apache.flink.table.catalog.CatalogManager.getPermanentTable(CatalogManager.java:408) > >> at > >> > org.apache.flink.table.catalog.CatalogManager.getTable(CatalogManager.java:375) > >> at > >> > org.apache.flink.table.planner.catalog.DatabaseCalciteSchema.getTable(DatabaseCalciteSchema.java:75) > >> at > >> > org.apache.calcite.jdbc.SimpleCalciteSchema.getImplicitTable(SimpleCalciteSchema.java:83) > >> at > >> org.apache.calcite.jdbc.CalciteSchema.getTable(CalciteSchema.java:289) > >> at > >> org.apache.calcite.sql.validate.EmptyScope.resolve_(EmptyScope.java:143) > >> at > >> > org.apache.calcite.sql.validate.EmptyScope.resolveTable(EmptyScope.java:99) > >> at > >> > org.apache.calcite.sql.validate.DelegatingScope.resolveTable(DelegatingScope.java:203) > >> at > >> > org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:112) > >> at > >> > org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:184) > >> at > >> > org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3256) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3238) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3510) > >> at > >> > org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60) > >> at > >> > org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) > >> at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:232) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1059) > >> at > >> > org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:766) > >> at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org > >> > $apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:141) > >> ... 54 more > >> > > >
junbaozhang
|
这个问题只能说是使用TableEnvironment不当的问题。ververica的gateway的模式其实就是多线程。
创建TableEnvironment和使用TableEnvironment可能不是一个线程,worker线程是被复用的。 简单来说就是: 当session创建的时候,worker thread1 会创建一个TableEnvironment, 然后当后续其他该session请求过来时候,可能是 worker thread2使用该TableEnvironment执行sql。 这个其实就是在多线程情况下使用TableEnvironment。不符合TableEnvironment只能在单线程使用的约束。 [hidden email] <[hidden email]> 于2020年7月28日周二 下午2:09写道: > > gateway就类似于一个web服务,大概流程是建立连接时会初始化一个session,在session里面初始化TableEnvironment,然后根据sql类型做不同的操作,比如select语句会去执行sqlQuery,具体可查看 > https://github.com/ververica/flink-sql-gateway。 > > 另外,加了RelMetadataQueryBase.THREAD_PROVIDERS > > .set(JaninoRelMetadataProvider.of(FlinkDefaultRelMetadataProvider.INSTANCE()))后确实不报这个错了。 > > 题外话,个人认为flink不应该将这样的异常抛给用户去解决,除非我去深入研究源码,要不然根本无法搞清楚具体发生了什么,在封装性上还有待改善。 > ________________________________ > 发件人: godfrey he <[hidden email]> > 发送时间: 2020年7月28日 13:55 > 收件人: user-zh <[hidden email]> > 主题: Re: flink1.11.0 执行sqlQuery时报NullPointException > > 我的怀疑点还是多线程引起的。 > 你能具体描述一下你们gateway的行为吗? 是一个web server? > > 另外,你可以在table env执行query前加上 > RelMetadataQueryBase.THREAD_PROVIDERS > > .set(JaninoRelMetadataProvider.of(FlinkDefaultRelMetadataProvider.INSTANCE())); > 这句话临时fix。 > > [hidden email] <[hidden email]> 于2020年7月28日周二 > 上午11:02写道: > > > 不是多线程同时操作一个tableEnvironment,每执行一次都会创建一个TableEnvironment > > ________________________________ > > 发件人: godfrey he <[hidden email]> > > 发送时间: 2020年7月28日 9:58 > > 收件人: user-zh <[hidden email]> > > 主题: Re: flink1.11.0 执行sqlQuery时报NullPointException > > > > 你们是否在多线程环境下使用 TableEnvironment ? > > TableEnvironment 不是线程安全的,多线程情况使用可能出现一些莫名其妙的问题。 > > > > godfrey he <[hidden email]> 于2020年7月28日周二 上午9:55写道: > > > > > hi 能给出详细的schema信息吗? > > > > > > [hidden email] <[hidden email]> 于2020年7月27日周一 > > > 下午7:02写道: > > > > > >> 补充一下,执行的sql如下: > > >> > > >> select order_no, order_time from > > >> x.ods.ods_binlog_test_trip_create_t_order_1 > > >> > > >> ________________________________ > > >> 发件人: [hidden email] <[hidden email]> > > >> 发送时间: 2020年7月27日 18:49 > > >> 收件人: [hidden email] <[hidden email]> > > >> 主题: flink1.11.0 执行sqlQuery时报NullPointException > > >> > > >> Hi,all: > > >> 本人正在为公司之前基于flink1.10的gateway升级flink版本到1.11,用的hive > > >> catalog,建表后,执行sqlQuery方法时报NullPointException,希望给出排错建议,具体报错信息如下: > > >> Caused by: java.lang.NullPointerException > > >> at java.util.Objects.requireNonNull(Objects.java:203) > > >> at > > >> > > > org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:141) > > >> at > > >> > > > org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:106) > > >> at > > >> > > > org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.<init>(FlinkRelMetadataQuery.java:73) > > >> at > > >> > > > org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.instance(FlinkRelMetadataQuery.java:52) > > >> at > > >> > > > org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:39) > > >> at > > >> > > > org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:38) > > >> at > > >> > > > org.apache.calcite.plan.RelOptCluster.getMetadataQuery(RelOptCluster.java:178) > > >> at > > >> > > > org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:118) > > >> at > > >> > > > org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:111) > > >> at > > >> > > > org.apache.calcite.rel.core.RelFactories$ProjectFactoryImpl.createProject(RelFactories.java:180) > > >> at > org.apache.calcite.tools.RelBuilder.project_(RelBuilder.java:1462) > > >> at org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:1256) > > >> at > > >> org.apache.calcite.tools.RelBuilder.projectNamed(RelBuilder.java:1521) > > >> at > > >> > > > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectList(SqlToRelConverter.java:4125) > > >> at > > >> > > > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:685) > > >> at > > >> > > > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:642) > > >> at > > >> > > > org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3345) > > >> at > > >> > > > org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:568) > > >> at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org > > >> > > > $apache$flink$table$planner$calcite$FlinkPlannerImpl$$rel(FlinkPlannerImpl.scala:164) > > >> at > > >> > > > org.apache.flink.table.planner.calcite.FlinkPlannerImpl.rel(FlinkPlannerImpl.scala:151) > > >> at > > >> > > > org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNodes(SqlExprToRexConverterImpl.java:81) > > >> at > > >> > > > org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNode(SqlExprToRexConverterImpl.java:73) > > >> at > > >> > > > org.apache.flink.table.planner.delegation.ParserImpl.parseSqlExpression(ParserImpl.java:93) > > >> at > > >> > > > org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolveExpressionDataType(CatalogTableSchemaResolver.java:119) > > >> at > > >> > > > org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolve(CatalogTableSchemaResolver.java:83) > > >> at > > >> > > > org.apache.flink.table.catalog.CatalogManager.resolveTableSchema(CatalogManager.java:380) > > >> at > > >> > > > org.apache.flink.table.catalog.CatalogManager.getPermanentTable(CatalogManager.java:408) > > >> at > > >> > > > org.apache.flink.table.catalog.CatalogManager.getTable(CatalogManager.java:375) > > >> at > > >> > > > org.apache.flink.table.planner.catalog.DatabaseCalciteSchema.getTable(DatabaseCalciteSchema.java:75) > > >> at > > >> > > > org.apache.calcite.jdbc.SimpleCalciteSchema.getImplicitTable(SimpleCalciteSchema.java:83) > > >> at > > >> org.apache.calcite.jdbc.CalciteSchema.getTable(CalciteSchema.java:289) > > >> at > > >> > org.apache.calcite.sql.validate.EmptyScope.resolve_(EmptyScope.java:143) > > >> at > > >> > > > org.apache.calcite.sql.validate.EmptyScope.resolveTable(EmptyScope.java:99) > > >> at > > >> > > > org.apache.calcite.sql.validate.DelegatingScope.resolveTable(DelegatingScope.java:203) > > >> at > > >> > > > org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:112) > > >> at > > >> > > > org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:184) > > >> at > > >> > > > org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3256) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3238) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3510) > > >> at > > >> > > > org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60) > > >> at > > >> > > > org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) > > >> at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:232) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1059) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:766) > > >> at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org > > >> > > > $apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:141) > > >> ... 54 more > > >> > > > > > > |
嗯,对,创建TableEnvironment和使用不是一个线程。
________________________________ 发件人: godfrey he <[hidden email]> 发送时间: 2020年7月28日 14:19 收件人: user-zh <[hidden email]> 主题: Re: flink1.11.0 执行sqlQuery时报NullPointException 这个问题只能说是使用TableEnvironment不当的问题。ververica的gateway的模式其实就是多线程。 创建TableEnvironment和使用TableEnvironment可能不是一个线程,worker线程是被复用的。 简单来说就是: 当session创建的时候,worker thread1 会创建一个TableEnvironment, 然后当后续其他该session请求过来时候,可能是 worker thread2使用该TableEnvironment执行sql。 这个其实就是在多线程情况下使用TableEnvironment。不符合TableEnvironment只能在单线程使用的约束。 [hidden email] <[hidden email]> 于2020年7月28日周二 下午2:09写道: > > gateway就类似于一个web服务,大概流程是建立连接时会初始化一个session,在session里面初始化TableEnvironment,然后根据sql类型做不同的操作,比如select语句会去执行sqlQuery,具体可查看 > https://github.com/ververica/flink-sql-gateway。 > > 另外,加了RelMetadataQueryBase.THREAD_PROVIDERS > > .set(JaninoRelMetadataProvider.of(FlinkDefaultRelMetadataProvider.INSTANCE()))后确实不报这个错了。 > > 题外话,个人认为flink不应该将这样的异常抛给用户去解决,除非我去深入研究源码,要不然根本无法搞清楚具体发生了什么,在封装性上还有待改善。 > ________________________________ > 发件人: godfrey he <[hidden email]> > 发送时间: 2020年7月28日 13:55 > 收件人: user-zh <[hidden email]> > 主题: Re: flink1.11.0 执行sqlQuery时报NullPointException > > 我的怀疑点还是多线程引起的。 > 你能具体描述一下你们gateway的行为吗? 是一个web server? > > 另外,你可以在table env执行query前加上 > RelMetadataQueryBase.THREAD_PROVIDERS > > .set(JaninoRelMetadataProvider.of(FlinkDefaultRelMetadataProvider.INSTANCE())); > 这句话临时fix。 > > [hidden email] <[hidden email]> 于2020年7月28日周二 > 上午11:02写道: > > > 不是多线程同时操作一个tableEnvironment,每执行一次都会创建一个TableEnvironment > > ________________________________ > > 发件人: godfrey he <[hidden email]> > > 发送时间: 2020年7月28日 9:58 > > 收件人: user-zh <[hidden email]> > > 主题: Re: flink1.11.0 执行sqlQuery时报NullPointException > > > > 你们是否在多线程环境下使用 TableEnvironment ? > > TableEnvironment 不是线程安全的,多线程情况使用可能出现一些莫名其妙的问题。 > > > > godfrey he <[hidden email]> 于2020年7月28日周二 上午9:55写道: > > > > > hi 能给出详细的schema信息吗? > > > > > > [hidden email] <[hidden email]> 于2020年7月27日周一 > > > 下午7:02写道: > > > > > >> 补充一下,执行的sql如下: > > >> > > >> select order_no, order_time from > > >> x.ods.ods_binlog_test_trip_create_t_order_1 > > >> > > >> ________________________________ > > >> 发件人: [hidden email] <[hidden email]> > > >> 发送时间: 2020年7月27日 18:49 > > >> 收件人: [hidden email] <[hidden email]> > > >> 主题: flink1.11.0 执行sqlQuery时报NullPointException > > >> > > >> Hi,all: > > >> 本人正在为公司之前基于flink1.10的gateway升级flink版本到1.11,用的hive > > >> catalog,建表后,执行sqlQuery方法时报NullPointException,希望给出排错建议,具体报错信息如下: > > >> Caused by: java.lang.NullPointerException > > >> at java.util.Objects.requireNonNull(Objects.java:203) > > >> at > > >> > > > org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:141) > > >> at > > >> > > > org.apache.calcite.rel.metadata.RelMetadataQuery.<init>(RelMetadataQuery.java:106) > > >> at > > >> > > > org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.<init>(FlinkRelMetadataQuery.java:73) > > >> at > > >> > > > org.apache.flink.table.planner.plan.metadata.FlinkRelMetadataQuery.instance(FlinkRelMetadataQuery.java:52) > > >> at > > >> > > > org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:39) > > >> at > > >> > > > org.apache.flink.table.planner.calcite.FlinkRelOptClusterFactory$$anon$1.get(FlinkRelOptClusterFactory.scala:38) > > >> at > > >> > > > org.apache.calcite.plan.RelOptCluster.getMetadataQuery(RelOptCluster.java:178) > > >> at > > >> > > > org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:118) > > >> at > > >> > > > org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:111) > > >> at > > >> > > > org.apache.calcite.rel.core.RelFactories$ProjectFactoryImpl.createProject(RelFactories.java:180) > > >> at > org.apache.calcite.tools.RelBuilder.project_(RelBuilder.java:1462) > > >> at org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:1256) > > >> at > > >> org.apache.calcite.tools.RelBuilder.projectNamed(RelBuilder.java:1521) > > >> at > > >> > > > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectList(SqlToRelConverter.java:4125) > > >> at > > >> > > > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:685) > > >> at > > >> > > > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:642) > > >> at > > >> > > > org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3345) > > >> at > > >> > > > org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:568) > > >> at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org > > >> > > > $apache$flink$table$planner$calcite$FlinkPlannerImpl$$rel(FlinkPlannerImpl.scala:164) > > >> at > > >> > > > org.apache.flink.table.planner.calcite.FlinkPlannerImpl.rel(FlinkPlannerImpl.scala:151) > > >> at > > >> > > > org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNodes(SqlExprToRexConverterImpl.java:81) > > >> at > > >> > > > org.apache.flink.table.planner.calcite.SqlExprToRexConverterImpl.convertToRexNode(SqlExprToRexConverterImpl.java:73) > > >> at > > >> > > > org.apache.flink.table.planner.delegation.ParserImpl.parseSqlExpression(ParserImpl.java:93) > > >> at > > >> > > > org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolveExpressionDataType(CatalogTableSchemaResolver.java:119) > > >> at > > >> > > > org.apache.flink.table.api.internal.CatalogTableSchemaResolver.resolve(CatalogTableSchemaResolver.java:83) > > >> at > > >> > > > org.apache.flink.table.catalog.CatalogManager.resolveTableSchema(CatalogManager.java:380) > > >> at > > >> > > > org.apache.flink.table.catalog.CatalogManager.getPermanentTable(CatalogManager.java:408) > > >> at > > >> > > > org.apache.flink.table.catalog.CatalogManager.getTable(CatalogManager.java:375) > > >> at > > >> > > > org.apache.flink.table.planner.catalog.DatabaseCalciteSchema.getTable(DatabaseCalciteSchema.java:75) > > >> at > > >> > > > org.apache.calcite.jdbc.SimpleCalciteSchema.getImplicitTable(SimpleCalciteSchema.java:83) > > >> at > > >> org.apache.calcite.jdbc.CalciteSchema.getTable(CalciteSchema.java:289) > > >> at > > >> > org.apache.calcite.sql.validate.EmptyScope.resolve_(EmptyScope.java:143) > > >> at > > >> > > > org.apache.calcite.sql.validate.EmptyScope.resolveTable(EmptyScope.java:99) > > >> at > > >> > > > org.apache.calcite.sql.validate.DelegatingScope.resolveTable(DelegatingScope.java:203) > > >> at > > >> > > > org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:112) > > >> at > > >> > > > org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:184) > > >> at > > >> > > > org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3256) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3238) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3510) > > >> at > > >> > > > org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60) > > >> at > > >> > > > org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1110) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1084) > > >> at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:232) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1059) > > >> at > > >> > > > org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:766) > > >> at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org > > >> > > > $apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:141) > > >> ... 54 more > > >> > > > > > >
junbaozhang
|
Free forum by Nabble | Edit this page |