Sqoop优化


1.怎么监控数据是否完全导入?

使用shell脚本去查询mysql中某表的数据。然后和hive中表的行数对比。

#!/bin/bash
cnt = ‘mysq1 -uroot -p123456 一e "select count(*) from hyk.dept"’
echo“u2 table of test total rows :${cnt}"

2.某表如果2G数据,设置多少个mapper合适?

建议128M(和块大小一致)一个mapper即可.

3.-m和split-by的优化

小量数据时(200M左右): 最好使用一个map,快且减少小文件。

大量数据时: 要特别考虑数据的特征,对于spit-by最完美的情况是有一个:均匀分布的数字(如自增列)或时间事段。且这个字段还有素引(最好字段是int. tinyin)。 这样在抽取时使得并发的每个sql处理相近的数据量,并且Sqoop附加的where条件可以使用索引。

split-by id,-m,数据量1-100,第一个mapper:(0,50],第二个mapper:(50, 100]。

对于m要综合考虑数据量、IO、源数据库的性能、集群的资理等等。一种简单的考虑是最大不超过yarn上分配给这个用户的vcore个数,最小“数据量/m”要够一个128MB的文件。如果条件允许可以先设置一个值跑着试试,然后观察源数据库负载,集群IO以及运行时长等,再进行相应调整。

4. --fetch-size n
一次去mysql中批量读取的数据条数。建议:

1.考虑一条数据的量。(如果2个字段和200个字段的–fetch-size不能一样)

2.考虑数据库的性能

3.考虑网络速度

4.最好的状态是一次–fetch-size能满足一个mapper
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值