1.技术路线
oracle--kafka-kudu
2.各个组件优缺点
Hive:数据直接存放于hdfs中,适合离线分析,确不利于记录级别的随机读写。
Hbase:将数据存放再hbase中,适合记录级别的随机读写。对离线分析确不友好。
Kudu:是对 hdfs 和 hbase 功能上的补充,能提供快速的分析 和实时计算能力
Kudu 特性:
kudu 面向结构化存储 支撑单行事务
不允许用户数据的primary key重复
底层直接采用本地文件系统parquet 列式存储格式
设计既兼顾了分析型查询,又兼顾了随机读写的能力 primary key 的唯一性 限制了写入的时延性
突出优点就是:大表上亿条数据,查询速度快
缺点:写的性能比较慢
为了充分利用kudu 的优点 将接口表全部建成kudu 表 通过kafka的消费者直接将数据写入kudu表中。中间逻辑表采用 impala+hdfs 形式。并且表采用parquet的形式。
impala-shell -i jfhadoop263:19005
例:4.1一个字段做主键
CREATE TABLE `ogg_mobilearea_test1`(
`leading` string,
`areacode` string,
`corpname` string,
`resold` string,
`etl_dt` string,
PRIMARY KEY(leading)
)
PARTITION BY HASH PARTITIONS 16
STORED AS KUDU
TBLPROPERTIES (
'kudu.master_addresses' = 'jfhadoop260:20000,jfhadoop261:20000,jfhadoop263:20000'
);
4.2全字段做主键:
CREATE TABLE `ogg_mobilearea_test2`(
`leading` string,
`areacode` string,
`corpname` string,
`resold` string,
`etl_dt` string,
PRIMARY KEY(leading,areacode,corpname,resold,etl_dt)
)
PARTITION BY HASH PARTITIONS 16
STORED AS KUDU
TBLPROPERTIES (
'kudu.master_addresses' = 'jfhadoop260:20000,jfhadoop261:20000,jfhadoop263:20000'
);
Desc 表ogg_mobilearea_test1
Desc 表 ogg_mobilearea_test2
5.创建impala+praquet 表
create table pdm_impala.kafka_traffic_duration_impala(
c_years string
,c_months string
,c_day string
,c_region string
,c_duration bigint
,c_load_time string
,c_callon bigint
)
partitioned by (etl_dt string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ';'
WITH SERDEPROPERTIES ('serialization.format'=';', 'field.delim'=';')
STORED AS parquet;
Desc pdm_impala.kafka_traffic_duration_impala
6.刷新数据
invalidate metadata table_name;