Mysql数据通过Sqoop导入HDFS

同步策略

Ø 全量表:存储完整的数据。

Ø 增量表:存储新增加的数据。

Ø 新增及变化表:存储新增加的数据和变化的数据。

Ø特殊表:只需要存储一次。

1.全量同步策略

image-20210524105637572.png

2.增量同步策略

image-20210524105830582.png

3.新增及变化策略

image-20210524110032003.png

4.特殊策略

某些特殊的维度表,可不必遵循上述同步策略。

1)客观世界维度

没变化的客观世界的维度(比如性别,地区,民族,政治成分,鞋子尺码)可以只存一份固定值。

2)日期维度

日期维度可以一次性导入一年或若干年的数据。

分析表同步策略

image-20210524110210314.png

sqoop命令

sqoop import \
--connect jdbc:mysql://hadoop102:3306/gmall \
--username root \
--password 000000 \
--target-dir /origin_data/$APP/db/$1/$do_date \
--delete-target-dir \                         #是否删除已存在的目标文件
--query "select 1=1 and  \$CONDITIONS" \        # 查询语句最后都要加 and $CONDITIONS
--num-mappers 1 \                             #数据分割   sqoop底层执行MR中的map
--fields-terminated-by '\t' \
--compress \
--compression-codec lzop \
--null-string '\\N' \            #字符串空值
--null-non-string '\\N'         #非字符串空值
#Hive中的Null在底层是以“\N”来存储,而MySQL中的Null在底层就是Null,为了保证数据两端的一致性。在导出数据时采用--input-null-string和--input-null-non-string两个参数。导入数据时采用--null-string和--null-non-string。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。