更新时间:2022-12-14 GMT+08:00
mor表视图读取
mor表同步给Hive后,会在Hive表中同步出:“表名+后缀_rt”和“表名+后缀_ro”两张表。其中后缀为rt表代表实时视图,后缀为ro的表代表读优化视图。例如:同步给Hive的hudi表名为test, 同步Hive后hive表中多出两张表分别为test_rt,和test_ro。
- 实时视图读取(Hive,SparkSQL为例):直接读取Hive里面存储的后缀为_rt的hudi表即可。
select count(*) from test_rt;
- 实时视图读取(Spark dataSource API为例):和cow表一样,请参考cow表相关操作。
- 增量视图读取(hive, SparkSQL为例):
set hive.input.format=org.apache.hudi.hadoop.hive.HoodieCombineHiveInputFormat; // sparksql 不需要指定 set hoodie.test.consume.mode=INCREMENTAL; set hoodie.test.consume.max.commits=3; set hoodie.test.consume.start.timestamp=20201227153030; select count(*) from default.test_rt where `_hoodie_commit_time`>'20201227153030';
- 增量视图(Spark dataSource API为例):和cow表一样,请参考cow表相关操作。
- 读优化视图读取(Hive,SparkSQL为例):直接读取Hive里面存储的后缀为_ro的hudi表即可。
select count(*) from test_ro;
- 读优化视图读取(Spark dataSource API为例):和读普通的dataSource表类似。
必须指定查询类型QUERY_TYPE_OPT_KEY 为QUERY_TYPE_READ_OPTIMIZED_OPT_VAL
spark.read.format("hudi") .option(QUERY_TYPE_OPT_KEY, QUERY_TYPE_READ_OPTIMIZED_OPT_VAL) // 指定查询类型为读优化视图 .load("/tmp/default/mor_bugx/*/*/*/*") // 指定读取的hudi表路径,当前表有3级分区 .createTempView("mycall") spark.sql("select * from mycall").show(100) 注意: Spark sql不支持datasource表的增量视图查询,Hive、dataSource API均可正常查询。
父主题: 读操作指导