- 增量同步遇到的坑
- 并行度
- 列式存储导出问题
- Sqoop数据导出一致性问题
- 业务系统手动导入数据,导入的时间使用了历史时间而不是插入时间
-
Sqoop的底层运行任务是MR中的Map,没有Reduce阶段的任务,默认4个MapTask
-
数据导入时,建议并行度设为1:--num-mappers 1
-
并行度>1时,会产生多个文件
-
数据量较大时,可以增加并行度,并指定切分的键:--split-by
-
问题描述:
- 数仓表采用列式存储,Sqoop导出时可能出问题 解决方案:
-
1、ads层数据量不多,不采用列式存储(首选)
2、创建 常规存储的 临时表,再导出
-
场景:
- Sqoop导出HIVE到到MySQL时,使用4个MapTask,过程中有2个任务失败,那此时MySQL中存储了另外两个Map任务导入的数据 原因:
- Sqoop将导出过程分解为多个事务 解决方案:
- 添加 --staging-table选项,指定 表名,这是个辅助表,使得阶段数据最终在单个事务中移动到目标表
--staging-table app_xxx_tmp --clear-staging-table



