更新时间:2022-12-14 GMT+08:00

cow表视图读取

  • 实时视图读取(Hive,SparkSQL为例):直接读取Hive里面存储的Hudi表即可。
    select count(*) from test;
  • 实时视图读取(Spark dataSource API为例):和读普通的dataSource表类似。

    必须指定查询类型QUERY_TYPE_OPT_KEY 为QUERY_TYPE_SNAPSHOT_OPT_VAL。

    spark.read.format("hudi")
    .option(QUERY_TYPE_OPT_KEY, QUERY_TYPE_SNAPSHOT_OPT_VAL) // 指定查询类型为实时视图模式
    .load("/tmp/default/cow_bugx/*/*/*/*") // 指定读取的hudi表路径,当前表有3级分区
    .createTempView("mycall")
    spark.sql("select * from mycall").show(100)
  • 增量视图读取(Hive,SparkSQL为例):
    set hoodie.test.consume.mode=INCREMENTAL;  //设置增量读取模式
    set hoodie.test.consume.max.commits=3;  // 指定最大消费的commits数量
    set hoodie.test.consume.start.timestamp=20201227153030;  // 指定初始增量拉取commit
    select count(*) from default.test where `_hoodie_commit_time`>'20201227153030'; // 这个过滤条件必须加且值为初始增量拉取的commit。
  • 增量视图读取(Spark dataSource API为例):

    必须指定查询类型QUERY_TYPE_OPT_KEY 为增量模式QUERY_TYPE_INCREMENTAL_OPT_VAL

    spark.read.format("hudi")  
    .option(QUERY_TYPE_OPT_KEY, QUERY_TYPE_INCREMENTAL_OPT_VAL) // 指定查询类型为增量模式
    .option(BEGIN_INSTANTTIME_OPT_KEY, "20210308212004")  // 指定初始增量拉取commit
    .option(END_INSTANTTIME_OPT_KEY, "20210308212318")  // 指定增量拉取结束commit
    .load("/tmp/default/cow_bugx/*/*/*/*")  // 指定读取的hudi表路径,当前表有3级分区
    .createTempView("mycall")  // 注册为spark临时表
    spark.sql("select * from mycall where `_hoodie_commit_time`>'20210308211131'")// 开始查询,和hive增量查询语句一样
    .show(100, false)
  • 读优化视图:cow表读优化视图等同于实时视图。