最近,我正在使用Sqoop Import将数据从Oracle导入HDFS。
以下是经验教训:
我开始观察Sqoop缓慢运行边界查询,例如在5小时内导入数据集,边界查询需要1小时。
我查看基本查询,它是SELECT MIN(id), max(id) from user
当我在巨大的表(数十亿条记录)上运行此查询时,它卡住了,Oracle没有快速响应。然而,SELECT MIN(id) from user
或SELECT max(id) from user
跑得快。
我没有Oracle表结构,索引信息等的细节。
在这篇文章中,我想分享我在我的案例中如何解决它,并想问社区是否有人以不同的方式解决了同样的问题。
另一个问题,为什么Sqoop开发人员没有考虑边界查询的性能。
我不确定Sqoop是否仍然经常使用,投票这个问题如果它仍然相关,我将发表所有经验教训的帖子。
这是我们正在使用的优化边界查询:
SELECT
*
FROM
(
SELECT
MIN( id ) min_
from
user
) v1,
(
SELECT
MAX( id ) max_
from
user
) v2;