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 user
或 SELECT 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;
最近,我正在使用 Sqoop Import 将数据从 Oracle 导入到 HDFS。
以下是经验教训之一:
我开始观察 Sqoop 运行边界查询很慢,例如导入数据集需要 5 小时,边界查询需要 1 小时。
我查看了基本查询,它是 SELECT MIN(id), max(id) from user
当我 运行 查询巨大的 table(十亿条记录)时,它卡住了,Oracle 没有快速响应 。而 SELECT MIN(id) from user
或 SELECT 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;