大数据面试之Datax

1. DataX 与 Sqoop 区别

1) DataX 与 Sqoop 都是主要用于离线系统中批量同步数据处理场景。

2) DataX 和 Sqoop 区别如下:

(1) DataX 底层是单进程多线程; Sqoop 底层是 4 个 Map;

(2) 数据量大的场景优先考虑 Sqoop 分布式同步; 数据量小的场景优先考虑 DataX,完全基于内存; DataX 数据量大, 可以使用多个 DataX 实例, 每个实例负责一部分 (手动划分)。

(3) Sqoop 是为 Hadoop 而生的, 对 Hadoop 相关组件兼容性比较好; Datax 是插件化 开发, 支持的 Source 和 Sink 更多一些。

(4) Sqoop 目前官方不在升级维护; DataX 目前阿里在升级维护

(5) 关于运行日志与统计信息, DataX 更丰富, Sqoop 基于 Yarn 不容易采集

2. 速度控制

1) 关键优化参数如下:

2) 生效优先级:

(1) 全局 Byte 限速 / 单 Channel Byte 限速

(2) 全局 Record 限速 / 单 Channel Record 限速

两个都设置, 取结果小的

(3) 上面都没设置, 总 Channel 数的设置生效

3) 项目配置

只设置 总 channel 数=5, 基本可以跑满网卡带宽。

3.内存调整

建议将内存设置为 4G 或者 8G, 这个也可以根据实际情况来调整。

调整 JVM xms xmx 参数的两种方式: 一种是直接更改 datax.py 脚本; 另一种是在启动的时候, 加上对应的参数, 如下:

python datax/bin/datax.py --jvm="-Xms8G -Xmx8G" /path/to/your/job.json

4.空值处理

1) MySQL (null) => Hive (\N) 要求 Hive 建表语句

解决该问题的方案有两个:

(1) 修改 DataX HDFS Writer 的源码, 增加自定义 null 值存储格式的逻辑。

(2) 在 Hive 中建表时指定 null 值存储格式为空字符串 (''), 例如:

2) Hive (\N) => MySQL (null)

5.配置文件生成脚本

(1) 一个表一个配置, 如果有几千张表, 怎么编写的配置?

(2) 脚本使用说明

ython gen_import_config.py -d database -t table

6.DataX 一天导入多少数据

1) 全量同步的表如下

(1)活动表 、 优惠规则表 、 优惠卷表 、 SKU 平台属性表 、 SKU 销售属性表

(2)SPU 商品表 (1-2 万)、 SKU 商品表 (10-20 万)、 品牌表 、 商品一级分类 、 商品二 级分类 、 商品三级分类

(3)省份表 、 地区表

(4)编码字典表

以上全部加一起 30 万条, 约等于 300m。

加购表 (每天增量 20 万 、 全量 100 万 = 》 1g)

所以 Datax 每天全量同步的数据 1-2g 左右。

注意: 金融 、 保险 (平安 、 民生银行), 只有业务数据数据量大一些。

2) 增量同步的表如下

(1)加购表 (20 万)、 订单表 (10 万)、 订单详情表 (15 万)、 订单状态表 、 支付表 (9 万)、 退单表 (1000)、 退款表 (1000)

(2)订单明细优惠卷关联表 、 优惠卷领用表

(3)商品评论表 、 收藏表

(4)用户表 、 订单明细活动关联表 增量数据每天 1-2g

7.Datax 如何实现增量同步

获取今天新增和变化的数据: 通过 sql 过滤, 创建时间是今天或者操作时间等于今天。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值