HBase 维表 Join
更新时间: 2023-04-24 20:24:24
阅读 202
HBase 维表 Join
Hbase 维表 JOIN 的 SET 语法中本地缓存设置跟 JDBC 和 Redis 一样,但是多了两个新的设置项:
-- 必须设置项 --
SET '<hbase_table_name>.format.schema' = 'ROW<rowkey VARCHAR, {column_family_name ROW<{column_name column_type}[, ...n]>}[, ...n]';
//定义hbase table的schema
CREATE FUNCTION cfParser AS 'com.netease.music.magina.udf.hbase.HbaseCFParser';
//引入平台解析hbase column family的UDF
例子:
SET 'magina_test2.format.schema' = 'ROW<rowkey VARCHAR, f1 ROW<c1 VARCHAR, c2 INT>, f2 ROW<c2 INT, c3 BIGINT>>';
CREATE FUNCTION cfParser AS 'com.netease.music.magina.udf.hbase.HbaseCFParser';
例子中说明一点,f1 和 f2 是真实 hbase 表中存在的 column family 的名字;而 c1,c2,c3,c4 是可以随意定义的,表示 column family 中各个列的名称。
具体JOIN语法如下:
SELECT {<other_view_name>.<column_name> [AS <alias_name>]}[, ...n],
{cfParser(<hbase_table_name>.<column_family_name>, <column_index>) [AS <alias_name>]} [, ...n]
FROM <other_view_name>
LEFT JOIN <hbase_catalog_name>.`default`.<hbase_table_name>
FOR SYSTEM_TIME AS OF <other_view_name>.<proctime_column_name>
ON <other_view_name>.<column_name> = <hbase_table_name>.rowkey;
具体例子如下:
SELECT V3.proctime,
V3.id,
V3.os,
V3.seqno,
cfParser(magina_test2.f1, 0) as c1 from V3
LEFT JOIN hbase2_test.`default`.magina_test2
FOR SYSTEM_TIME AS OF V3.proctime
ON V3.os = magina_test2.rowkey;
文档反馈
以上内容对您是否有帮助?