2014-10-17 42 views
0

我使用Sqoop将数据从Oracle导入Hadoop。在Oracle表中,我有大约2百万条记录,而我正在提供的主键是分割字段。Sqoop没有使用所有指定的映射器

我的sqoop工作正在完成,我得到正确的数据和工作正在运行30分钟,直到现在都好。

当我检查输出文件时,我看到第一个文件是1.4 GB,第二个文件大约是157.2 MB,最后一个文件(第20个文件)大约是10.4 MB,而第3个到第19个所有其他文件都是0字节。

我在设置-m 20,因为我想为我的工作运行20个映射器。

这里是sqoop命令:

sqoop进口--connect “CONNECTION_STRING” --query “SELECT * FROM WHERE和\ $条件” --split-由.ID --target-DIR/output_data - m 20

注意:我的群集足够处理20个映射器,并且数据库一次也能够处理20个请求。

有没有想法?

  • Dharmesh

回答

1

尝试使用不同--split按领域更好的负载平衡。

0

这是因为主键(ID)不是均匀分布的。因此,你的映射器并没有被适当地使用。所以你必须使用一些其他领域的分裂均匀分布。