首页 > 解决方案 > Sqoop 导入优化的 Oracle 边界查询

问题描述

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

这是吸取的教训之一:

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

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

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

我没有关于 Oracle 表结构、索引信息等的详细信息。

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

另一个问题,为什么 Sqoop 开发人员没有考虑边界查询的性能。

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

标签: oraclesqoop

解决方案


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

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

推荐阅读