Skip to content

[Bug report] java.lang.NumberFormatException: Cannot parse null string #7185

@fengDianDemaNong

Description

@fengDianDemaNong

Version

main branch

Describe what's wrong

doris 建表语句:CREATE TABLE dwd_finance_lrb (
dt_date VARCHAR(6) NULL,
tenant_name VARCHAR(150) NULL COMMENT '企业名称',
yysr_bq DOUBLE NULL COMMENT '营业收入-本期',
yysr_lj DOUBLE NULL COMMENT '营业收入-累计',
j_yycb_bq DOUBLE NULL COMMENT '减:营业成本-本期',
j_yycb_lj DOUBLE NULL COMMENT '减:营业成本-累计',
j_sjjfj_bq DOUBLE NULL COMMENT '税金及附加-本期',
j_sjjfj_lj DOUBLE NULL COMMENT '税金及附加-累计',
j_xsfy_bq DOUBLE NULL COMMENT '销售费用-本期',
j_xsfy_lj DOUBLE NULL COMMENT '销售费用-累计',
j_glfy_bq DOUBLE NULL COMMENT '管理费用-本期',
j_glfy_lj DOUBLE NULL COMMENT '管理费用-累计',
j_cwfy_bq DOUBLE NULL COMMENT '财务费用-本期',
j_cwfy_lj DOUBLE NULL COMMENT '财务费用-累计',
j_zcjz_bq DOUBLE NULL COMMENT '资产减值损失-本期',
j_zcjz_lj DOUBLE NULL COMMENT '资产减值损失-累计',
gyjz_bq DOUBLE NULL COMMENT '加:公允价值变动收益(损失以-填列)-本期',
gyjz_lj DOUBLE NULL COMMENT '加:公允价值变动收益(损失以-填列)-累计',
tzsy_bq DOUBLE NULL COMMENT '投资收益(损失以-填列)-本期',
tzsy_lj DOUBLE NULL COMMENT '投资收益(损失以-填列)-累计',
lyhy_tzsy_bq DOUBLE NULL COMMENT '对联营企业和合营企业的投资收益-本期',
lyhy_tzsy_lj DOUBLE NULL COMMENT '对联营企业和合营企业的投资收益-累计',
yylr_bq DOUBLE NULL COMMENT '营业利润-本期',
yylr_lj DOUBLE NULL COMMENT '营业利润-累计',
yywsr_bq DOUBLE NULL COMMENT '营业外收入-本期',
yywsr_lj DOUBLE NULL COMMENT '营业外收入-累计',
j_yywzc_bq DOUBLE NULL COMMENT '减:营业外支出-本期',
j_yywzc_lj DOUBLE NULL COMMENT '减:营业外支出-累计',
j_fldzc_bq DOUBLE NULL COMMENT '非流动资产处置损失-本期',
j_fldzc_lj DOUBLE NULL COMMENT '非流动资产处置损失-累计',
lrze_bq DOUBLE NULL COMMENT '利润总额(亏损总额以-号填列)-本期',
lrze_lj DOUBLE NULL COMMENT '利润总额(亏损总额以-号填列)-累计',
j_sdsfy_bq DOUBLE NULL COMMENT '减: 所得税费用-本期',
j_sdsfy_lj DOUBLE NULL COMMENT '减: 所得税费用-累计',
jlr_bq DOUBLE NULL COMMENT '净利润-本期',
jlr_lj DOUBLE NULL COMMENT '净利润-累计',
mgsy_bq DOUBLE NULL COMMENT '每股收益-本期',
mgsy_lj DOUBLE NULL COMMENT '每股收益-累计',
jbmgsy_bq DOUBLE NULL COMMENT '基本每股收益-本期',
jbmgsy_lj DOUBLE NULL COMMENT '基本每股收益-累计',
ssmgsy_bq DOUBLE NULL COMMENT '稀释每股收益-本期',
ssmgsy_lj DOUBLE NULL COMMENT '稀释每股收益-累计',
key_year INT NULL COMMENT '年份',
key_month INT NULL COMMENT '月份',
create_time DATETIME NULL COMMENT '创建时间',
update_time DATETIME NULL COMMENT '更新时间',
etl_dt DATETIME NULL COMMENT '入仓时间',
dt DATETIME NULL COMMENT '批次号,默认是当前时间'
) ENGINE=OLAP
UNIQUE KEY(dt_date, tenant_name)
COMMENT '利润表'
DISTRIBUTED BY HASH(dt_date) BUCKETS AUTO
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"min_load_replica_num" = "-1",
"is_being_synced" = "false",
"storage_medium" = "hdd",
"storage_format" = "V2",
"inverted_index_storage_format" = "V1",
"enable_unique_key_merge_on_write" = "true",
"light_schema_change" = "true",
"disable_auto_compaction" = "false",
"enable_single_replica_compaction" = "false",
"group_commit_interval_ms" = "10000",
"group_commit_data_bytes" = "134217728",
"enable_mow_light_delete" = "false"
);

报错:java.lang.IllegalArgumentException: Failed to operate table(s) [dwd_finance_lrb] operation [LOAD] under schema [dwd], reason [Cannot parse null string]
java.lang.NumberFormatException: Cannot parse null string
at java.base/java.lang.Integer.parseInt(Integer.java:630)
at java.base/java.lang.Integer.valueOf(Integer.java:999)
at org.apache.gravitino.catalog.doris.utils.DorisUtils.extractDistributionInfoFromSql(DorisUtils.java:208)
at org.apache.gravitino.catalog.doris.operation.DorisTableOperations.getDistributionInfo(DorisTableOperations.java:795)

Error message and/or stacktrace

[root@bigdatadev01 0.9.0]# curl -X GET -H "Accept: application/vnd.gravitino.v1+json" -H "Content-Type: application/json" http://localhost:8090/api/metalakes/test/catalogs/doris_test/schemas/dwd/tables/dwd_finance_lrb
{"code":1001,"type":"NumberFormatException","message":"Failed to operate table(s) [dwd_finance_lrb] operation [LOAD] under schema [dwd], reason [Cannot parse null string]","stack":["java.lang.NumberFormatException: Cannot parse null string","\tat java.base/java.lang.Integer.parseInt(Integer.java:630)","\tat java.base/java.lang.Integer.valueOf(Integer.java:999)","\tat org.apache.gravitino.catalog.doris.utils.DorisUtils.extractDistributionInfoFromSql(DorisUtils.java:208)","\tat org.apache.gravitino.catalog.doris.operation.DorisTableOperations.getDistributionInfo(DorisTableOperations.java:795)","\tat org.apache.gravitino.catalog.jdbc.operation.JdbcTableOperations.load(JdbcTableOperations.java:226)","\tat org.apache.gravitino.catalog.jdbc.JdbcCatalogOperations.loadTable(JdbcCatalogOperations.java:331)","\tat org.apache.gravitino.catalog.TableOperationDispatcher.lambda$internalLoadTable$21(TableOperationDispatcher.java:464)","\tat org.apache.gravitino.catalog.CatalogManager$CatalogWrapper.lambda$doWithTableOps$1(CatalogManager.java:160)","\tat org.apache.gravitino.utils.IsolatedClassLoader.withClassLoader(IsolatedClassLoader.java:86)","\tat org.apache.gravitino.catalog.CatalogManager$CatalogWrapper.doWithTableOps(CatalogManager.java:155)","\tat org.apache.gravitino.catalog.TableOperationDispatcher.lambda$internalLoadTable$22(TableOperationDispatcher.java:464)","\tat org.apache.gravitino.catalog.OperationDispatcher.doWithCatalog(OperationDispatcher.java:100)","\tat org.apache.gravitino.catalog.TableOperationDispatcher.internalLoadTable(TableOperationDispatcher.java:462)","\tat org.apache.gravitino.catalog.TableOperationDispatcher.lambda$loadTable$3(TableOperationDispatcher.java:116)","\tat org.apache.gravitino.lock.TreeLockUtils.doWithTreeLock(TreeLockUtils.java:49)","\tat org.apache.gravitino.catalog.TableOperationDispatcher.loadTable(TableOperationDispatcher.java:116)","\tat org.apache.gravitino.hook.TableHookDispatcher.loadTable(TableHookDispatcher.java:63)","\tat org.apache.gravitino.catalog.TableNormalizeDispatcher.loadTable(TableNormalizeDispatcher.java:63)","\tat org.apache.gravitino.listener.TableEventDispatcher.loadTable(TableEventDispatcher.java:99)","\tat org.apache.gravitino.server.web.rest.TableOperations.lambda$loadTable$2(TableOperations.java:155)","\tat java.base/java.security.AccessController.doPrivileged(AccessController.java:712)","\tat java.base/javax.security.auth.Subject.doAs(Subject.java:439)","\tat org.apache.gravitino.utils.PrincipalUtils.doAs(PrincipalUtils.java:39)","\tat org.apache.gravitino.server.web.Utils.doAs(Utils.java:198)","\tat org.apache.gravitino.server.web.rest.TableOperations.loadTable(TableOperations.java:151)","\tat jdk.internal.reflect.GeneratedMethodAccessor34.invoke(Unknown Source)","\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.base/java.lang.reflect.Method.invoke(Method.java:568)","\tat org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)","\tat org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146)","\tat org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189)","\tat org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)","\tat org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93)","\tat org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478)","\tat org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400)","\tat org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)","\tat org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256)","\tat org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)","\tat org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)","\tat org.glassfish.jersey.internal.Errors.process(Errors.java:292)","\tat org.glassfish.jersey.internal.Errors.process(Errors.java:274)","\tat org.glassfish.jersey.internal.Errors.process(Errors.java:244)","\tat org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)","\tat org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)","\tat org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684)","\tat org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)","\tat org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)","\tat org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358)","\tat org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:311)","\tat org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)","\tat org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656)","\tat org.apache.gravitino.server.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:86)","\tat org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)","\tat org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)","\tat org.apache.gravitino.server.web.VersioningFilter.doFilter(VersioningFilter.java:111)","\tat org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)","\tat org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)","\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)","\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)","\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)","\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)","\tat org.eclipse.jetty.server.Server.handle(Server.java:516)","\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)","\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)","\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)","\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)","\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)","\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)","\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)","\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)","\tat java.base/java.lang.Thread.run(Thread.java:833)"]}

How to reproduce

在doris建表:CREATE TABLE dwd_finance_lrb (
dt_date VARCHAR(6) NULL,
tenant_name VARCHAR(150) NULL COMMENT '企业名称',
yysr_bq DOUBLE NULL COMMENT '营业收入-本期',
yysr_lj DOUBLE NULL COMMENT '营业收入-累计',
j_yycb_bq DOUBLE NULL COMMENT '减:营业成本-本期',
j_yycb_lj DOUBLE NULL COMMENT '减:营业成本-累计',
j_sjjfj_bq DOUBLE NULL COMMENT '税金及附加-本期',
j_sjjfj_lj DOUBLE NULL COMMENT '税金及附加-累计',
j_xsfy_bq DOUBLE NULL COMMENT '销售费用-本期',
j_xsfy_lj DOUBLE NULL COMMENT '销售费用-累计',
j_glfy_bq DOUBLE NULL COMMENT '管理费用-本期',
j_glfy_lj DOUBLE NULL COMMENT '管理费用-累计',
j_cwfy_bq DOUBLE NULL COMMENT '财务费用-本期',
j_cwfy_lj DOUBLE NULL COMMENT '财务费用-累计',
j_zcjz_bq DOUBLE NULL COMMENT '资产减值损失-本期',
j_zcjz_lj DOUBLE NULL COMMENT '资产减值损失-累计',
gyjz_bq DOUBLE NULL COMMENT '加:公允价值变动收益(损失以-填列)-本期',
gyjz_lj DOUBLE NULL COMMENT '加:公允价值变动收益(损失以-填列)-累计',
tzsy_bq DOUBLE NULL COMMENT '投资收益(损失以-填列)-本期',
tzsy_lj DOUBLE NULL COMMENT '投资收益(损失以-填列)-累计',
lyhy_tzsy_bq DOUBLE NULL COMMENT '对联营企业和合营企业的投资收益-本期',
lyhy_tzsy_lj DOUBLE NULL COMMENT '对联营企业和合营企业的投资收益-累计',
yylr_bq DOUBLE NULL COMMENT '营业利润-本期',
yylr_lj DOUBLE NULL COMMENT '营业利润-累计',
yywsr_bq DOUBLE NULL COMMENT '营业外收入-本期',
yywsr_lj DOUBLE NULL COMMENT '营业外收入-累计',
j_yywzc_bq DOUBLE NULL COMMENT '减:营业外支出-本期',
j_yywzc_lj DOUBLE NULL COMMENT '减:营业外支出-累计',
j_fldzc_bq DOUBLE NULL COMMENT '非流动资产处置损失-本期',
j_fldzc_lj DOUBLE NULL COMMENT '非流动资产处置损失-累计',
lrze_bq DOUBLE NULL COMMENT '利润总额(亏损总额以-号填列)-本期',
lrze_lj DOUBLE NULL COMMENT '利润总额(亏损总额以-号填列)-累计',
j_sdsfy_bq DOUBLE NULL COMMENT '减: 所得税费用-本期',
j_sdsfy_lj DOUBLE NULL COMMENT '减: 所得税费用-累计',
jlr_bq DOUBLE NULL COMMENT '净利润-本期',
jlr_lj DOUBLE NULL COMMENT '净利润-累计',
mgsy_bq DOUBLE NULL COMMENT '每股收益-本期',
mgsy_lj DOUBLE NULL COMMENT '每股收益-累计',
jbmgsy_bq DOUBLE NULL COMMENT '基本每股收益-本期',
jbmgsy_lj DOUBLE NULL COMMENT '基本每股收益-累计',
ssmgsy_bq DOUBLE NULL COMMENT '稀释每股收益-本期',
ssmgsy_lj DOUBLE NULL COMMENT '稀释每股收益-累计',
key_year INT NULL COMMENT '年份',
key_month INT NULL COMMENT '月份',
create_time DATETIME NULL COMMENT '创建时间',
update_time DATETIME NULL COMMENT '更新时间',
etl_dt DATETIME NULL COMMENT '入仓时间',
dt DATETIME NULL COMMENT '批次号,默认是当前时间'
) ENGINE=OLAP
UNIQUE KEY(dt_date, tenant_name)
COMMENT '利润表'
DISTRIBUTED BY HASH(dt_date) BUCKETS AUTO
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"min_load_replica_num" = "-1",
"is_being_synced" = "false",
"storage_medium" = "hdd",
"storage_format" = "V2",
"inverted_index_storage_format" = "V1",
"enable_unique_key_merge_on_write" = "true",
"light_schema_change" = "true",
"disable_auto_compaction" = "false",
"enable_single_replica_compaction" = "false",
"group_commit_interval_ms" = "10000",
"group_commit_data_bytes" = "134217728",
"enable_mow_light_delete" = "false"
);

2、在gravitino建对应catalog:

3、通过java api调用:@org.junit.Test
public void tes() {
GravitinoClient gravitinoClient = GravitinoClient
.builder(url)
.withMetalake("test")
.build();

    Catalog catalog = gravitinoClient.loadCatalog("doris_test");
    TableCatalog tableCatalog = catalog.asTableCatalog();
    // 获取指定catalog下的指定scheam下指定表的所有字段
    Table table = tableCatalog.loadTable(NameIdentifier.of("dwd", "dwd_finance_lrb"));
    println("表名:"+table.comment());
    Arrays.stream(table.columns()).forEach(column -> {
        println("column:"+column.name()+",类型:"+column.dataType().name()+",注释:"+column.comment());
    });

}

或者:通过api请求: curl -X GET -H "Accept: application/vnd.gravitino.v1+json" -H "Content-Type: application/json" http://localhost:8090/api/metalakes/test/catalogs/doris_test/schemas/dwd/tables/dwd_finance_lrb

应该是数据类型处理异常了

Additional context

No response

Metadata

Metadata

Assignees

Labels

1.0.0Release v1.0.0bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions