【原创】hive/mysq 字典表多字段替换事实表多字段

本文介绍了如何在事实表中,利用字典表将多个字段的字典code转换为对应的字典value。通过创建示例数据,展示了在Hive和MySQL中,通过左连接和CASE WHEN语句实现字典转换的详细步骤。适用于数据清洗和转换场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据详情:

事实表:其中多个字段是字典code。

字典表:两列,字典code、字典value。

需求:

现在将事实表的字典code转换成字典value。

案例数据准备:

CREATE TABLE test_value (
  id int,
  k1 varchar(20) DEFAULT NULL,
  k2 varchar(20) DEFAULT NULL,
  k3 varchar(20) DEFAULT NULL
);
CREATE TABLE test_key_value (
  ky varchar(20) DEFAULT NULL,
  val varchar(20) DEFAULT NULL
);

insert into test_value values (1,'a','b','c');
insert into test_value values (2,'d','e','f');
insert into test_value values (3,'g','h','i'); 

insert into test_key_value values ('a','1');
insert into test_key_value values ('b','2');
in

下面是一个从MySQL导入数据到Hive表中的Sqoop脚本,通过query参数指定了查询条件: ``` sqoop import \ --connect jdbc:mysql://<MySQL服务器地址>:<MySQL端口>/<MySQL数据库名> \ --username <MySQL用户名> \ --password <MySQL密码> \ --query 'SELECT * FROM <MySQL表名> WHERE <查询条件>' \ --target-dir <HDFS目标目录> \ --hive-import \ --hive-table <Hive表名> \ --create-hive-table \ --hive-overwrite \ --null-string '\\N' \ --null-non-string '\\N' \ --fields-terminated-by '\t' \ --num-mappers 1 \ --driver com.mysql.jdbc.Driver ``` 各参数含义如下: - `--connect`: 指定MySQL数据库的连接信息,包括服务器地址、端口、数据库名等; - `--username`和`--password`: 指定连接MySQL数据库所需的用户名和密码; - `--query`: 指定从MySQL中导出数据的SQL语句,可以通过`$CONDITIONS`变量来指定部分查询条件,例如`--query 'SELECT * FROM table WHERE id > 100 AND $CONDITIONS'`; - `--target-dir`: 指定导出数据存储在HDFS上的目标目录; - `--hive-import`: 表示将数据导入到Hive中; - `--hive-table`: 指定导入数据的Hive表名; - `--create-hive-table`: 如果Hive表不存在,将自动创建该表; - `--hive-overwrite`: 如果Hive表已存在,将覆盖原有表中的数据; - `--null-string`和`--null-non-string`: 指定MySQL中的空值在导入到Hive中的表示方式; - `--fields-terminated-by`: 指定输入数据的字段分隔符; - `--num-mappers`: 指定启动的map任务数; - `--driver`: 指定连接MySQL数据库所需的驱动类。 注:上述脚本中的<>符号需要替换为具体的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值