codope commented on code in PR #6049:
URL: https://github.com/apache/hudi/pull/6049#discussion_r922681411
##########
hudi-spark-datasource/hudi-spark-common/src/main/java/org/apache/hudi/HoodieDatasetBulkInsertHelper.java:
##########
@@ -97,8 +96,31 @@ public static Dataset<Row>
prepareHoodieDatasetForBulkInsert(SQLContext sqlConte
// simple fields for both record key and partition path: can directly
use withColumn
String partitionPathField =
keyGeneratorClass.equals(SimpleKeyGenerator.class.getName()) ?
partitionPathFields :
partitionPathFields.substring(partitionPathFields.indexOf(":") + 1);
- rowDatasetWithRecordKeysAndPartitionPath =
rows.withColumn(HoodieRecord.RECORD_KEY_METADATA_FIELD,
functions.col(recordKeyFields).cast(DataTypes.StringType))
- .withColumn(HoodieRecord.PARTITION_PATH_METADATA_FIELD,
functions.col(partitionPathField).cast(DataTypes.StringType));
+
+ // TODO(HUDI-3993) cleanup duplication
+ String tableName =
properties.getString(HoodieWriteConfig.TBL_NAME.key());
+ String partitionPathDecorationUDFName = PARTITION_PATH_UDF_FN +
tableName;
+
+ boolean shouldURLEncodePartitionPath =
config.shouldURLEncodePartitionPath();
+ boolean isHiveStylePartitioned = config.isHiveStylePartitioningEnabled();
+
+ if (shouldURLEncodePartitionPath || isHiveStylePartitioned) {
+ sqlContext.udf().register(
+ partitionPathDecorationUDFName,
+ (UDF1<String, String>) partitionPathValue ->
+ KeyGenUtils.handlePartitionPathDecoration(partitionPathField,
partitionPathValue,
+ shouldURLEncodePartitionPath, isHiveStylePartitioned),
+ DataTypes.StringType);
+
+ rowDatasetWithRecordKeysAndPartitionPath =
+ rows.withColumn(HoodieRecord.RECORD_KEY_METADATA_FIELD,
functions.col(recordKeyFields).cast(DataTypes.StringType))
Review Comment:
@TengHuo That's a good point. It can be a problem if you mix the write
operation type or switch row-writing config for a table. I would suggest filing
another JIRA ticket to keep it consistent across. I don't deem it to be a
blocker but would be good to keep it consistent.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]