Sqoop导入优化Oracle边界查询

Sqoop import optimized Oracle boundary query

最近,我正在使用 Sqoop Import 将数据从 Oracle 导入到 HDFS。

以下是经验教训之一:

我开始观察 Sqoop 运行边界查询很慢,例如导入数据集需要 5 小时,边界查询需要 1 小时。

我查看了基本查询,它是 SELECT MIN(id), max(id) from user

当我 运行 查询巨大的 table(十亿条记录)时,它卡住了,Oracle 没有快速响应 。而 SELECT MIN(id) from userSELECT max(id) from user 运行速度很快。

我没有 Oracle table 结构、索引信息等的详细信息

在这个 post 中,我想分享我是如何解决这个问题的,并想问问社区是否有人以不同的方式解决了同样的问题。

又一个问题,为什么Sqoop开发者没有考虑边界查询的性能

我不确定 Sqoop 是否仍然经常使用,如果它仍然相关,请投票给这个问题,我会post 总结所有经验教训。

这是我们正在使用的优化边界查询:

SELECT
    *
FROM
    (
        SELECT
            MIN( id ) min_
        from
            user
    ) v1,
    (
        SELECT
            MAX( id ) max_
        from
            user
    ) v2;