用kettle加工,加载数据到impala上
- 首先确认数据来源,例如 DB2数据库里的某些数据加工一下 传到impala
表输入组件里加工数据EXTRACT 输出到HDFS的指定路径(impala表的LOCATION)

- kettle加工数据上传到HDFS指定路径下
impala表数据不能update和delete,若要把实时数据加载进impala表,对于数据量较大的表(可以在impala里创建 临时表TEXTFILE 格式的,正式表PARQUET格式的 并分区;每次实时加工的数据传到临时表里,再把临时表的数据overwrite 到正式表)
TEXTFILE格式的表在创建时要指定字段分隔符 (一般常用ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 或者 ROW FORMAT DELIMITED FIELDS TERMINATED BY '|')
kettle 加工 拖拽相关组件如下图:

若源数据量很大,例如订单数据每天千万条,每次要更新最近3天的数据,可以按日期生成txt文件,每天一个文件, FILE_NAME 自定义文件目录,根据日期指定数据存放在HSFS上的位置'hdfs://IP:8020/user/hive/warehouse/test.db/order_tmp/dt_day_id='||substr(char(DT_DAY_ID),1,8)||'/order_'||substr(char(DT_DAY_ID),1,8) FILE_NAME
数据放在按日期命名的文件下/user/hive/warehouse/test.db/order_tmp/dt_id=20190301/order_20190301.txt

如果数据量不大一个txt文件即可

输入impala表指定的分隔符,编码选择UTF-8,如果分隔符不一致会造成传入NULL数据(另外如果分隔符是特殊字符要转义),编码不是UTF-8会乱码

如果源字段是string型,选择最小宽度可以一键快速搞定去掉左右两端空格。
- 关于impala的操作
远程到impala服务器上,输入impala-shell进入impala数据库环境
show databases; ##查看所有数据库
use test; ##连接test库
show tables; ##查看test库下所有表
show create table test.order_tmp; ##查看test.order_tmp表创建的表结构和格式
create table test.order_tmp(
order_cd STRING,
row_cd STRING,
dt_id Int,
order_qty STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
WITH SERDEPROPERTIES ('field.delim'=',', 'serialization.format'=',')
STORED AS TEXTFILE
LOCATION 'hdfs://dcbigdatamgr2:8020/user/hive/warehouse/test.db/order_tmp' ;

最低0.47元/天 解锁文章
174

被折叠的 条评论
为什么被折叠?



