[Bug] [hudi sink] hudi sink java client not support struct field type where is null
#10584 opened on Mar 10, 2026
Description
Search before asking
- I had searched in the issues and found no similar issues.
What happened
INSERT INTO test.dcjob_hudi2hudi_ly_0122_1 (_hoodie_commit_time, _hoodie_commit_seqno, _hoodie_record_key, _hoodie_partition_path, _hoodie_file_name, int_column, string_column, varchar_column, tinyint_column, smallint_column, bigint_column, float_column, double_column, decimal_column, date_column, timestamp_column, char_column, boolean_column, binary_column, array_column, map_column, struct_column) VALUES('20260306093746536', '20260306093746536_0_6', '11', '', 'eb787520-2452-4f83-b623-4b89c89b29e2-0_0-4733-5267_20260306154907638.parquet', 11, 'varchar_column1', 'string值1', 121, 321, 922337203685477501, 1.21, 123.41, 12345678.91, '2026-01-01', '2026-01-01 15:30:20.000', 'char值1', false, 0x62696E6172795F636F6C756D6E31, NULL, NULL, []);
Caused by: java.lang.NullPointerException at org.apache.avro.generic.GenericData.getField(GenericData.java:846) at org.apache.avro.generic.GenericData.getField(GenericData.java:865) at org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:219) at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:210) at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:131) at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:83) at org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:221) at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:210) at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:131)
SeaTunnel Version
2.3.9
SeaTunnel Config
{
"env": {
"job.mode": "BATCH",
"parallelism": 1,
"job.name": "zsdcTest_hudi2hudi_0121_instance_1768987020918_5401",
"checkpoint.interval": 10
},
"source": [{
"_type": "hudi_source",
"plugin_name": "hudi",
"result_table_name": "dcjob_hudi2hudi_ly_0121_12101424056",
"table_dfs_path": "hdfs://nameservice1/user/hive/warehouse",
"table_name": "dcjob_hudi2hudi_ly_0122_1",
"database": "test",
"query": "select * from `dcjob_hudi2hudi_ly_0122_1`"
}],
"sink": [{
"_type": "hudi_sink",
"schema_save_mode": "ERROR_WHEN_SCHEMA_NOT_EXIST",
"data_save_mode": "APPEND_DATA",
"plugin_name": "Hudi",
"source_table_name": "dcjob_hudi2hudi_ly_0121_12101424056_t",
"table_dfs_path": "hdfs://nameservice1/user/hive/warehouse",
"table_name": "dcjob_hudi2hudi_mb_0122_1",
"database": "test",
"table_type": "COPY_ON_WRITE"
}],
"transform": [{
"_type": "sql_trans",
"query": "SELECT TRY_CAST(`int_column` AS INTEGER) as `int_column`,TRY_CAST(`string_column` AS STRING) as `string_column`,TRY_CAST(`varchar_column` AS STRING) as `varchar_column`,TRY_CAST(`tinyint_column` AS INTEGER) as `tinyint_column`,TRY_CAST(`smallint_column` AS INTEGER) as `smallint_column`,TRY_CAST(`bigint_column` AS BIGINT) as `bigint_column`,TRY_CAST(`float_column` AS FLOAT) as `float_column`,TRY_CAST(`double_column` AS DOUBLE) as `double_column`,TRY_CAST(`decimal_column` AS DECIMAL(10,2)) as `decimal_column`,TRY_CAST(`date_column` AS DATE) as `date_column`,TRY_CAST(`timestamp_column` AS TIMESTAMP) as `timestamp_column`,TRY_CAST(`char_column` AS STRING) as `char_column`,TRY_CAST(`boolean_column` AS BOOLEAN) as `boolean_column`,TRY_CAST(`binary_column` AS BYTES) as `binary_column`,TRY_CAST(`array_column` AS ARRAY<STRING>) as `array_column`,TRY_CAST(`map_column` AS MAP(VARCHAR, INT)) as `map_column`,TRY_CAST(`struct_column` AS ROW(field1 string,field2 int)) as `struct_column` FROM `dcjob_hudi2hudi_ly_0121_12101424056`",
"source_table_name": "dcjob_hudi2hudi_ly_0121_12101424056",
"result_table_name": "dcjob_hudi2hudi_ly_0121_12101424056_t"
}]
}
Running Command
xxx
Error Exception
Caused by: java.lang.NullPointerException
at org.apache.avro.generic.GenericData.getField(GenericData.java:846)
at org.apache.avro.generic.GenericData.getField(GenericData.java:865)
at org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:219)
at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:210)
at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:131)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:83)
at org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:221)
at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:210)
at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:131)
Zeta or Flink or Spark Version
No response
Java or Scala Version
No response
Screenshots
No response
Are you willing to submit PR?
- Yes I am willing to submit a PR!
Code of Conduct
- I agree to follow this project's Code of Conduct