You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by "sivabalan narayanan (Jira)" <ji...@apache.org> on 2021/11/03 11:50:00 UTC
[jira] [Reopened] (HUDI-2343) Fix the exception for mergeInto when
the primaryKey and preCombineField of source table and target table differ
in case only
[ https://issues.apache.org/jira/browse/HUDI-2343?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
sivabalan narayanan reopened HUDI-2343:
---------------------------------------
> Fix the exception for mergeInto when the primaryKey and preCombineField of source table and target table differ in case only
> ----------------------------------------------------------------------------------------------------------------------------
>
> Key: HUDI-2343
> URL: https://issues.apache.org/jira/browse/HUDI-2343
> Project: Apache Hudi
> Issue Type: Sub-task
> Components: Spark Integration
> Reporter: 董可伦
> Assignee: 董可伦
> Priority: Blocker
> Labels: pull-request-available
> Fix For: 0.10.0
>
>
> Example:
> {code:java}
> val tableName = "test_hudi_table"
> spark.sql(
> s"""
> create table ${tableName} (
> id int,
> name string,
> price double,
> ts long
> ) using hudi
> options (
> primaryKey = 'id',
> type = 'cow'
> )
> location '/tmp/${tableName}'
> """.stripMargin)
> spark.sql(
> s"""
> | merge into $tableName
> | using (
> | select 1 as ID, 'a1' as NAME, 10 as PRICE, 1000 as TS, '1' as FLAG
> | ) s0
> | on s0.ID = $tableName.id
> | when matched and FLAG = '1' then update set
> | id = s0.ID, name = s0.NAME, price = s0.PRICE, ts = s0.TS
> | when not matched and FLAG = '1' then insert *
> """.stripMargin){code}
> It will throw an exception:
> {code:java}
> org.apache.hudi.exception.HoodieException: ts(Part -ts) field not found in record. Acceptable fields were :[ID, NAME, PRICE, TS, FLAG]
> {code}
> and:
> {code:java}
> spark.sql(
> s"""
> | merge into $tableName
> | using (
> | select 1 as ID, 'a1' as NAME, 10 as PRICE, 1000 as ts, '1' as FLAG
> | ) s0
> | on s0.ID = $tableName.id
> | when matched and FLAG = '1' then update set
> | id = s0.ID, name = s0.NAME, price = s0.PRICE, ts = s0.ts
> | when not matched and FLAG = '1' then insert *
> """.stripMargin)
> {code}
> It will throw the exception:
> {code:java}
> org.apache.hudi.exception.HoodieKeyException: recordKey values: "id:__null__" for fields: [id] cannot be entirely null or empty.
> {code}
>
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)