更新时间:2024-11-29 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表路径 .createTempView("mycall") spark.sql("select * from mycall").show(100)
- 增量视图读取(Hive为例):
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'; // 结果必须根据start.timestamp和end.timestamp进行过滤,如果没有指定end.timestamp,则只需要根据start.timestamp进行过滤。
- 增量视图读取(SparkSQL为例):
set hoodie.test.consume.mode=INCREMENTAL; //设置增量读取模式 set hoodie.test.consume.start.timestamp=20201227153030; // 指定初始增量拉取commit set hoodie.test.consume.end.timestamp=20210308212318; // 指定增量拉取结束commit,如果不指定的话采用最新的commit select count(*) from test_rt where `_hoodie_commit_time`>'20201227153030' and `_hoodie_commit_time`<='20210308212318'; // 结果必须根据start.timestamp和end.timestamp进行过滤,如果没有指定end.timestamp,则只需要根据start.timestamp进行过滤。
- 增量视图读取(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表路径 .createTempView("mycall") // 注册为spark临时表 spark.sql("select * from mycall where `_hoodie_commit_time`>'20210308212004' and `_hoodie_commit_time`<='20210308212318'").show(100, false) // 结果必须根据START_INSTANTTIME和END_INSTANTTIME进行过滤,如果没有指定END_INSTANTTIME,则只需要根据START_INSTANTTIME进行过滤。
- 读优化视图:cow表读优化视图等同于实时视图。
父主题: 读操作指导