You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by "Vinoth Govindarajan (Jira)" <ji...@apache.org> on 2022/04/25 04:04:00 UTC

[jira] [Reopened] (HUDI-1762) Hive Sync is not working with Hive Style Partitioning

     [ https://issues.apache.org/jira/browse/HUDI-1762?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Vinoth Govindarajan reopened HUDI-1762:
---------------------------------------

> Hive Sync is not working with Hive Style Partitioning
> -----------------------------------------------------
>
>                 Key: HUDI-1762
>                 URL: https://issues.apache.org/jira/browse/HUDI-1762
>             Project: Apache Hudi
>          Issue Type: Bug
>          Components: hive
>            Reporter: Vinoth Govindarajan
>            Assignee: Vinoth Govindarajan
>            Priority: Major
>              Labels: hive, pull-request-available
>
> When you create a Hudi table with hive style partitioning and enable the hive sync, it didn't work because it's assuming the partition will be separated by a slash.
>  
> when the hive style partitioning is enabled for the target table like this:
> {code:java}
> hoodie.datasource.write.partitionpath.field=datestr
> hoodie.datasource.write.hive_style_partitioning=true
> {code}
> This is the error it throws:
> {code:java}
> 21/04/01 23:10:33 ERROR deltastreamer.HoodieDeltaStreamer: Got error running delta sync once. Shutting down
> org.apache.hudi.exception.HoodieException: Got runtime exception when hive syncing delta_streamer_test
> 	at org.apache.hudi.hive.HiveSyncTool.syncHoodieTable(HiveSyncTool.java:122)
> 	at org.apache.hudi.utilities.deltastreamer.DeltaSync.syncMeta(DeltaSync.java:560)
> 	at org.apache.hudi.utilities.deltastreamer.DeltaSync.writeToSink(DeltaSync.java:475)
> 	at org.apache.hudi.utilities.deltastreamer.DeltaSync.syncOnce(DeltaSync.java:282)
> 	at org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer.lambda$sync$2(HoodieDeltaStreamer.java:170)
> 	at org.apache.hudi.common.util.Option.ifPresent(Option.java:96)
> 	at org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer.sync(HoodieDeltaStreamer.java:168)
> 	at org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer.main(HoodieDeltaStreamer.java:470)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:498)
> 	at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:690)
> Caused by: org.apache.hudi.hive.HoodieHiveSyncException: Failed to sync partitions for table fact_scheduled_trip__1pc_trip_uuid
> 	at org.apache.hudi.hive.HiveSyncTool.syncPartitions(HiveSyncTool.java:229)
> 	at org.apache.hudi.hive.HiveSyncTool.syncHoodieTable(HiveSyncTool.java:166)
> 	at org.apache.hudi.hive.HiveSyncTool.syncHoodieTable(HiveSyncTool.java:108)
> 	... 12 more
> Caused by: java.lang.IllegalArgumentException: Partition path datestr=2021-03-28 is not in the form yyyy/mm/dd 
> 	at org.apache.hudi.hive.SlashEncodedDayPartitionValueExtractor.extractPartitionValuesInPath(SlashEncodedDayPartitionValueExtractor.java:55)
> 	at org.apache.hudi.hive.HoodieHiveClient.getPartitionEvents(HoodieHiveClient.java:220)
> 	at org.apache.hudi.hive.HiveSyncTool.syncPartitions(HiveSyncTool.java:221)
> 	... 14 more
> {code}
> To fix this issue we need to create a new partition extractor class and assign that class name as the hive sync partition extractor.
> After you define the new partition extractor class, you can configure it like this:
> {code:java}
> hoodie.datasource.hive_sync.enable=true
> hoodie.datasource.hive_sync.partition_extractor_class=org.apache.hudi.hive.HiveStylePartitionValueExtractor
> {code}



--
This message was sent by Atlassian Jira
(v8.20.7#820007)