云服务器内容精选

  • 编写DWS表定义 复制MRS表所有列的定义,做适当的类型转换以适配DWS语法,创建OBS外表: 1 2 3 4 5 6 7 8 9 10 11 12 CREATE FOREIGN TABLE rtd_mfdt_int_currency_ft( _hoodie_commit_time text, _hoodie_commit_seqno text, _hoodie_record_key text, _hoodie_partition_path text, _hoodie_file_name text, ... )SERVER obs_server OPTIONS ( foldername '/erpgc-obs-test-01/s000/sbi_fnd/rtd_mfdt_int_currency_t/', format 'hudi', encoding 'utf-8' )distribute by roundrobin; 其中,foldername为hudi数据在OBS上存储路径,对应MRS中Spark-sql表定义中的LOCATION,末尾要以“/”结尾。
  • 创建Hudi任务 迁移场景 如果GaussDB(DWS)表已经通过CDL导入数据,改为用SQL on Hudi方式迁移数据。或者是用CDM做全量初始化后,继续使用SQL on Hudi方式同步增量数据。 1. 创建hudi.hudi_sync_state同步状态表,需要管理员权限。 1 SELECT pg_catalog.create_hudi_sync_table(); 通常情况下,每个数据库中只创建一次hudi.hudi_sync_state。 2. 设置CDL的同步进度,用户需要有同步目标表的insert和update权限、HUDI外表的select权限,否则无法正常设置同步进度。 1 SELECT hudi_set_sync_commit('SCHEMA.TABLE', 'SCHEMA.FOREIGN_TABLE', 'LATEST_COMMIT'); 其中: SCHEMA.TABLE表示同步数据的目标表名,带schema。 SCHEMA.FOREIGN_TABLE表示OBS外表命名,带schema。 LATEST_COMMIT表示已同步的Hudi数据时间截点。 示例: 目标表public.in_rel,已经同步hudi的数据到20220913152131,切换到SQL on Hudi方式从OBS外表hudi_read1中继续导出数据。 1 SELECT hudi_set_sync_commit('public.in_rel', 'public.hudi_read1', '20220913152131'); 3. 提交Hudi同步任务。 1 SELECT hudi_sync_task_submit('SCHEMA.TABLE', 'SCHEMA.FOREIGN_TABLE'); 例如: 目标表public.in_rel,切换到SQL on Hudi方式从OBS外表hudi_read1中继续导出数据。 1 SELECT hudi_sync_task_submit('public.in_rel', 'public.hudi_read1'); 新建场景 DWS表为空,第一次从Hudi同步数据,可执行以下命令直接创建任务。 1 SELECT hudi_sync_task_submit('SCHEMA.TABLE', 'SCHEMA.FOREIGN_TABLE');
  • Hudi外表信息查询与自动同步任务 GaussDB(DWS)提供一系列系统函数来实现Hudi外表信息获取、创建Hudi自动同步任务等功能。其中Hudi自动同步任务实现了从Hudi外表周期性同步数据到GaussDB(DWS)内表功能。 表2 Hudi系统函数 序号 名称 类型 功能 1 pg_show_custom_settings() 内置函数 查询HUDI外表参数设置详情。 2 hudi_get_options(regclass) 内置函数 查询HUDI外表的属性信息(hoodie.properties)。 3 hudi_get_max_commit(regclass) 内置函数 获取当前HUDI外表最新commit的时间戳。 4 hudi_sync_task_submit(regclass, regclass) 内置函数 提交HUDI自动同步任务。 hudi_sync_task_submit(regclass, regclass, text, text) 5 hudi_show_sync_state() 内置函数 获取HUDI自动同步任务的同步状态。 6 hudi_sync(regclass, regclass) 存储过程 HUDI自动同步任务调用入口。 7 hudi_sync_custom(regclass, regclass, text) 存储过程 HUDI自动同步任务调用入口,支持用户自定义目标表和数据源表的字段同步对应关系。 8 hudi_set_sync_commit(regclass, regclass, text) 内置函数 设置HUDI自动同步任务首次同步的起点时间戳,避免在已经同步了部分数据的情况下,重新同步已有数据。 hudi_set_sync_commit(text, text) 设置HUDI自动同步任务下一次同步的起点时间戳,可以用于重复同步历史数据或者跳过某些数据。
  • 实时视图与增量视图查询 GaussDB(DWS)提供了类似spark-sql风格的表级参数,用于支持实时视图和增量视图。 具体参数说明如下,其中SCHEMA.FOREIGN_TABLE需要替换为实际的schema和外表名。 表1 实时视图与增量视图查询的参数 参数 取值 说明 hoodie.SCHEMA.FOREIGN_TABLE.consume.mode SNAPSHOT 查询实时视图。 INCREMENTAL 查询增量视图。 hoodie.SCHEMA.FOREIGN_TABLE.consume. start.timestamp hudi时间戳 指定增量同步的起始commit。 hoodie.SCHEMA.FOREIGN_TABLE.consume. ending.timestamp hudi时间戳 指定增量同步的结束commit,不指定则采用最新commit。 以上参数支持使用set命令设置,并且仅在当前SESSION中有效;使用reset命令恢复缺省值。 可以通过系统函数pg_catalog.pg_show_custom_settings()来查询相关参数的设置详情。 查询MOR表的增量视图时,需要使用where条件过滤_hoodie_commit_time字段,避免读取到未合并的不符合条件的log文件数据;COW表无需该操作。