[ https://issues.apache.org/jira/browse/HUDI-1762?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Vinoth Govindarajan updated HUDI-1762: -------------------------------------- Status: Closed (was: Patch Available) > 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 Integration > 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.3.4#803005)