业务域数据导入到数仓
sqoop增量数据导入
bin/sqoop import \
--connect jdbc:mysql://linux01:3306/myword \
--username root \
--password root \
--target-dir /sqoopdata/t_md_areas \ --中间存储在hdfs 的目录
--hive-import \
--hive-database mydata \ --存入hive的数据库
--hive-table areas \ -- 存入hive的表
--delete-target-dir \ --如果hdfs的目录存在则删除
--as-textfile \ -- 存入以text方式 sqoop不太支持parquet格式 不支持orc格式
--fields-terminated-by ',' \
--compress \
--null-string '\\N' \ -- 如果有空字段字符串 以\N 格式存储
--null-non-string '\\N' \
--hive-overwrite \ --覆盖导入
--split-by id \ --分片字段
--query 'select id, areaname from t_md_areas where level=1 AND $CONDITIONS ' \ -- sql语句
-m 2
主要有三种方式 :
1. 采用全量导入: 这种方式适合数据基本不变化,比如各种字典表,商品类目表
2,增量导入 : 适用于数据一直变化的 比如订单信息表
但是增量导入会出现数据重复问题 ,解决方式有两种:
1) 每天生成当天的全量快照表 :
优点:是方便统计查询
缺点:是会有大量冗余
2) 拉链表来解决,每天不断更新拉链表:
优点:存储冗余量低还能够在一天的分区能看到所有用户的历史订单变化
缺点:查询的时候会稍微麻烦一点点 有个过滤