MAPREDUCE服务 MRS-Spark读写Hudi开发规范:Spark写Hudi各种写入模式参数规范说明

时间:2024-11-06 21:54:31

Spark写Hudi各种写入模式参数规范说明

类型

说明

开启参数

场景选择

特点

upsert

update + insert

Hudi默认写入类型,写入具有更新能力。

默认,无需参数开启。

  • SparkSQL:
    set hoodie.datasource.write.operation=upsert;
  • DataSource Api:
    df.write
    .format("hudi")
    .options(xxx)
    .option("hoodie.datasource.write.operation", "upsert")
    .mode("append")
    .save("/tmp/tablePath")

默认选择。

优点:

  • 支持小文件合并。
  • 支持更新。

缺点:

  • 写入速度中规中矩。

append

数据无更新直接写入

  • Spark:Spark侧没有纯append模式可使用bulk insert模式替代。
  • SparkSQL:
    set hoodie.datasource.write.operation = bulk_insert;
    set hoodie.datasource.write.row.writer.enable = true;
  • DataSource Api:
    df.write
    .format("hudi")
    .options(xxx)
    .option("hoodie.datasource.write.operation", "bulk_insert")
    .option("hoodie.datasource.write.row.writer.enable", "true")
    .mode("append")
    .save("/tmp/tablePath")

追求高吞吐,无数据更新场景。

优点:

  • 写入速度最快。

缺点:

  • 无小文件合并能力。
  • 无更新能力。
  • 需要clustering合并小文件。

delete

删除操作

无需参数,直接使用delete语法即可:

delete from tableName where primaryKey='id1';

SQL删除数据数据场景。

和upsert类型一样。

Insert overwrite

覆写分区

无需参数,直接使用insert overwrite语法即可:

insert overwrite table tableName partition(dt ='2021-01-04') 
select * from srcTable;

分区级别重新。

覆写分区。

Insert overwrite table

覆写全表

无需参数,直接使用insert overwrite语法即可:

insert overwrite table tableName 
select * from srcTable;

全部重写。

覆写全表。

Bulk_insert

批量导入

  • SparkSQL:
    set hoodie.datasource.write.operation = bulk_insert;
    set hoodie.datasource.write.row.writer.enable = true;
  • DataSource Api:
    df.write
    .format("hudi")
    .options(xxx)
    .option("hoodie.datasource.write.operation", "bulk_insert")
    .option("hoodie.datasource.write.row.writer.enable", "true")
    .mode("append")
    .save("/tmp/tablePath")

建议表初始化搬迁的时候使用。

和append模式一样。

support.huaweicloud.com/devg-rule-mrs/mrs_07_450129.html