Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-15309

Execute sql appear "NumberFormatException: Zero length BigInteger"

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Duplicate
    • 1.10.0
    • None
    • Table SQL / Client
    • None

    Description

      The sql is:
      CREATE TABLE `src` (
      key bigint,
      v varchar
      ) WITH (
      'format.field-delimiter'='|',
      'connector.type'='filesystem',
      'format.derive-schema'='true',
      'connector.path'='/defender_test_data/daily_regression_batch_hive_1.10/test_cast/sources/src.csv',
      'format.type'='csv'
      );

      select
      cast(key as decimal(10,2)) as c1,
      cast(key as char(10)) as c2,
      cast(key as varchar(10)) as c3
      from src
      order by c1, c2, c3
      limit 1;

      The result schema get in the code is:
      sinkSchema:root

      – c1: DECIMAL(10, 2)
      – c2: CHAR(10)
      – c3: VARCHAR(10)

      The detail:
      If you user the sql above to execute in a sqlclinet environment, you can get the result like this:

      But if you put the result directly into a cvs sink in the code, there will be a exception:

      Caused by: java.lang.NumberFormatException: Zero length BigInteger
      at java.math.BigInteger.<init>(BigInteger.java:302)
      at org.apache.flink.table.dataformat.Decimal.fromUnscaledBytes(Decimal.java:214)
      at org.apache.flink.table.dataformat.Decimal.readDecimalFieldFromSegments(Decimal.java:487)
      at org.apache.flink.table.dataformat.BinaryRow.getDecimal(BinaryRow.java:334)
      at org.apache.flink.table.dataformat.DataFormatConverters$BigDecimalConverter.toExternalImpl(DataFormatConverters.java:642)
      at org.apache.flink.table.dataformat.DataFormatConverters$BigDecimalConverter.toExternalImpl(DataFormatConverters.java:618)
      at org.apache.flink.table.dataformat.DataFormatConverters$DataFormatConverter.toExternal(DataFormatConverters.java:358)
      at org.apache.flink.table.dataformat.DataFormatConverters$RowConverter.toExternalImpl(DataFormatConverters.java:1370)
      at org.apache.flink.table.dataformat.DataFormatConverters$RowConverter.toExternalImpl(DataFormatConverters.java:1349)
      at org.apache.flink.table.dataformat.DataFormatConverters$DataFormatConverter.toExternal(DataFormatConverters.java:340)
      at SinkConversion$43.processElement(Unknown Source)
      at org.apache.flink.streaming.runtime.tasks.OperatorChain$ChainingOutput.pushToOperator(OperatorChain.java:550)
      at org.apache.flink.streaming.runtime.tasks.OperatorChain$ChainingOutput.collect(OperatorChain.java:527)
      at org.apache.flink.streaming.runtime.tasks.OperatorChain$ChainingOutput.collect(OperatorChain.java:487)
      at org.apache.flink.streaming.api.operators.AbstractStreamOperator$CountingOutput.collect(AbstractStreamOperator.java:730)
      at org.apache.flink.streaming.api.operators.AbstractStreamOperator$CountingOutput.collect(AbstractStreamOperator.java:708)
      at org.apache.flink.table.runtime.util.StreamRecordCollector.collect(StreamRecordCollector.java:44)
      at org.apache.flink.table.runtime.operators.sort.SortLimitOperator.endInput(SortLimitOperator.java:98)
      at org.apache.flink.streaming.runtime.tasks.OperatorChain.endOperatorInput(OperatorChain.java:265)
      at org.apache.flink.streaming.runtime.tasks.OperatorChain.endHeadOperatorInput(OperatorChain.java:249)
      at org.apache.flink.streaming.runtime.io.StreamOneInputProcessor.processInput(StreamOneInputProcessor.java:73)
      at org.apache.flink.streaming.runtime.tasks.StreamTask.processInput(StreamTask.java:311)
      at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMailboxLoop(MailboxProcessor.java:187)
      at org.apache.flink.streaming.runtime.tasks.StreamTask.runMailboxLoop(StreamTask.java:488)
      at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:470)
      at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:702)
      at org.apache.flink.runtime.taskmanager.Task.run(Task.java:527)
      at java.lang.Thread.run(Thread.java:834)

      The input data is:
      193|val_193
      338|val_338
      446|val_446
      459|val_459
      394|val_394
      237|val_237
      482|val_482
      174|val_174
      413|val_413
      494|val_494
      207|val_207
      199|val_199
      466|val_466
      208|val_208
      174|val_174
      399|val_399
      396|val_396
      247|val_247
      417|val_417
      489|val_489
      162|val_162
      377|val_377
      397|val_397
      309|val_309
      365|val_365
      266|val_266
      439|val_439
      342|val_342
      367|val_367
      325|val_325
      167|val_167
      195|val_195
      475|val_475
      17|val_17
      113|val_113
      155|val_155
      203|val_203
      339|val_339
      0|val_0
      455|val_455
      128|val_128
      311|val_311
      316|val_316
      57|val_57
      302|val_302

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              xiaojin.wy xiaojin.wy
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: