我最近遇到了一个sqoop导入问题。
当我提到以下内容时:
--num-mappers 10 SQOOP import fetches 10x records
--num-mappers 15 SQOOP import fetches 15x records
--num-mappers 1 SQOOP import fetches exact records
对于相同的选择查询。
select查询包含一个left outer连接,当在db上运行时,它返回x个记录,这正是我试图检索的。
查询是:
SELECT table1.*,table2.* from table1 left outer join table2 on
(table1.tab1_id = table2.tab2_id);
由于tab2\u id是table2的一个pk,所以我对--split by子句使用相同的pk。
但是我不明白为什么sqoop在指定不同的Map器时返回不同的记录
1条答案
按热度按时间vuktfyat1#
问题是中间提交给sqoop作业的sql查询没有生成正确的结果集。
原因::sqoop命令如下所示:
这个$conditions在内部被上下边界值替换。
由于查询中没有where条件,所以$conditions块对将数据拆分到Map器没有影响,从而导致将整个数据委托给所有Map器(以生成的为准)。