hive 电商数仓 ods 存储的json 到dwd怎么转换
时间: 2024-03-17 16:45:33 浏览: 190
将 Hive 电商数仓 ODS 存储的 JSON 转换到 DWD 的过程如下:
1. 创建 DWD 表,定义表结构和分区方式,例如:
```
CREATE TABLE dwd_orders (
order_id BIGINT,
user_id BIGINT,
product_id BIGINT,
order_time STRING,
order_amount DOUBLE,
order_status INT
)
PARTITIONED BY (dt STRING);
```
2. 使用 Hive 内置函数 `get_json_object` 解析 JSON 数据,将其转换为 DWD 表的字段,例如:
```
INSERT INTO TABLE dwd_orders PARTITION (dt='2022-01-01')
SELECT
CAST(get_json_object(json_data, '$.order_id') AS BIGINT),
CAST(get_json_object(json_data, '$.user_id') AS BIGINT),
CAST(get_json_object(json_data, '$.product_id') AS BIGINT),
CAST(get_json_object(json_data, '$.order_time') AS STRING),
CAST(get_json_object(json_data, '$.order_amount') AS DOUBLE),
CAST(get_json_object(json_data, '$.order_status') AS INT)
FROM ods_orders
WHERE dt='2022-01-01';
```
这里假设 ODS 表名为 `ods_orders`,包含 JSON 格式的数据,并且数据存储在 `dt='2022-01-01'` 的分区中。使用 `get_json_object` 函数解析 JSON 字段,然后将解析后的结果插入到 DWD 表 `dwd_orders` 的对应字段中,并指定分区为 `dt='2022-01-01'`。
需要注意的是,使用 `get_json_object` 函数解析 JSON 数据可能会比较耗时,因此在实际应用中可以考虑使用更高效的 JSON 库,例如 Jackson、Gson 等。
阅读全文