如何减少摄取时间

时间:2019-01-22 18:45:08

标签: hive sqoop

减少SQOOP占用的摄取时间

我正在将数据从Oracle表'TRAN'提取到Hive中。 Oracle表'TRAN'是分区表,它具有20亿行。 它在“ tran_date”列上分区。 TRAN表中还有诸如Modify_date和Tranid之类的列。

我们的要求是根据Modify_date增量加载配置单元表。 从TRAN中选择*,其中Modify_date = TRUNC(SYSDATE -1);

我们使用按列拆分为“透明”

问题是,当sqoop找到min(tranid),max(tranid)时,它会花费很多时间, 由于它使用查询选择min(tranid),max(tranid)Froom TRAN,其中Modify_date> =和Modify_date <=

由于它不使用tran_date(根据源表进行了分区),因此看来最终要进行表扫描

我正在考虑使用边界查询,例如TRAN中的select min(tranid),max(tranid);

请建议这是否正确?

它可能会得到min(tranid)和max(tranid)并基于此将创建splits,假设min为1且max为100000000,但基于select查询获得的实际recs假定只有10个recs ,那么我担心min / mx以上会导致不正确的分割

0 个答案:

没有答案