更新时间:2025-09-12 GMT+08:00

创建Hudi数据(外表)

DWS通过外表方式访问OBS上的Hudi数据,与一般外表相比,Hudi外表无需额外设置更多的参数,只需指定format参数为“hudi”,即可指定数据源文件的格式。具体参见CREATE FOREIGN TABLE (SQL on OBS or Hadoop)

获取MRS上表定义

DWS Hudi外表为只读,因此在创建外表之前需要明确目标数据定义的字段及字段类型情况。

例如,对于MRS上的Hudi表,可以使用spark-sql来查询原始表定义:

1
SHOW create table rtd_mfdt_int_currency_t;

编写DWS表定义

复制MRS表所有列的定义,创建hudi外表,进行适当的类型转换以适配DWS语法:

 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 hudi_server OPTIONS (
foldername '/erpgc-test-01/s000/u1/rtd_mfdt_int_currency_t/',
format 'hudi',
encoding 'utf-8'
)distribute by roundrobin;

其中,foldername为hudi数据在OBS上存储路径,对应MRS中Spark-sql表定义中的LOCATION,末尾要以“/”结尾。