Hudi async/inline compaction

本文探讨了Hudi在使用Spark Structured Streaming写入Kafka时遇到的compaction问题。分析了async compaction的工作流程,包括Compaction Scheduling和Compaction Execution,并指出无论使用spark datasource writes还是stream sink,都会调用HoodieSparkSqlWriter.write函数。通过异步启动compaction服务,确保compaction不影响数据写入,从而提高速度并减少延迟。对于inline compaction的内容,文章表示将后续展开讨论。
摘要由CSDN通过智能技术生成

背景:在使用spark Structured Streaming将数据写入到kafka时,hudi compaction未按照相关参数正常执行。

无法正常compaction代码如下:

    val spark = SparkSession
      .builder
      .config("spark.serializer","org.apache.spark.serializer.KryoSerializer")
      .appName("test_leo")
      .enableHiveSupport()
      .getOrCreate()


    val df =
      spark.readStream
      .format("kafka")
      .option("kafka.bootstrap.servers", "ip:port")
      .option("subscribe", "hudi_leo_test").option("startingOffsets", "earliest").option("maxOffsetsPerTrigger", 2).option("failOnDataLoss",true)
      .load()

    df.writeStream.option("checkpointLocation","/spark/checkpoints/teststreaming01")
      .format("hudi")
      .option(DataSourceWriteOptions.OPERATION.key(), DataSourceWriteOptions.UPSERT_OPERATION_OPT_VAL)
      .option(DataSourceWriteOptions.PAYLOAD_CLASS_NAME.key(), "org.apache.hudi.common.model.OverwriteWithLatestAvroPayload")
      .option(DataSourceWriteOptions.STREAMING_IGNORE_FAILED_BATCH.key(), "false")
      .option(DataSourceWriteOptions.TABLE_TYPE.key(), "MERGE_ON_READ")
      .option(HoodieWriteConfig.TBL_NAME.key(), "test_hudi_leo_com")
      .option(DataSourceWriteOptions.RECORDKEY_FIELD.key(), "id")
      .option(DataSourceWriteOptions.PRECOMBINE_FIELD.key(), "ts")
      .option(DataSourceWriteOptions.HIVE_SYNC_ENABLED.key(), true)
      .option(DataSourceWriteOptions.HIVE_DATABASE.key(), "temp_db")
      .option(DataSourceWriteOptions.HIVE_TABLE.key(), "test_hudi_leo_com")
      .option(DataSourceWriteOptions.HIVE_URL.key(), hive_url)
      .option(DataSourceWriteOptions.HIVE_USER.key(), "hudi")
      .option(DataSourceWriteOptions.HIVE_PASS.key(), "hudi")
      .option(HoodieWriteConfig.INSERT_PARALLELISM_VALUE.key,"40")
      .option(HoodieWriteConfig.BULKINSERT_PARALLELISM_VALUE.key,"40")
      .option(HoodieWriteConfig.UPSERT_PARALLELISM_VALUE.key,"40")
      .option(HoodieWriteConfig.DELETE_PARALLELISM_VALUE.key,"40")
      .option(HoodieIndexConfig.INDEX
  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值