oracle - Sqoop 导入优化的 Oracle 边界查询
问题描述
最近,我正在使用 Sqoop Import 将数据从 Oracle 导入 HDFS。
这是吸取的教训之一:
我开始观察 Sqoop 运行边界查询很慢,例如数据集导入需要 5 小时,边界查询需要 1 小时。
我查看了基本查询,它是SELECT MIN(id), max(id) from user
当我在巨大的表(数十亿条记录)上运行此查询时,它卡住了,Oracle 没有快速响应。然而,SELECT MIN(id) from user
ORSELECT max(id) from user
运行速度很快。
我没有关于 Oracle 表结构、索引信息等的详细信息。
在这篇文章中,我想分享我是如何解决这个问题的,并想问问社区是否有人以不同的方式解决了同样的问题。
另一个问题,为什么 Sqoop 开发人员没有考虑边界查询的性能。
我不确定 Sqoop 是否仍然经常使用,如果它仍然相关,请投票给这个问题,我将发布所有经验教训。
解决方案
这是我们正在使用的优化边界查询:
SELECT
*
FROM
(
SELECT
MIN( id ) min_
from
user
) v1,
(
SELECT
MAX( id ) max_
from
user
) v2;
推荐阅读
- docker - 如何将流利的位输入日志写入本地主机系统日志服务器
- java - 使用复杂的构造函数 Kotlin + Jackson 将 json 反序列化为子类型
- c++ - 当用 gRPC 调用替换函数调用时,我是否需要使我的代码线程安全?
- c# - 一个类可以有 2 个属性,其中只能填充 1 个吗?
- powerbi - 在 Power BI 中比较两个值并计算结果的度量
- pyspark - 当 regexp_replace 添加空间时,Pyspark 错误 DDL 长度超出
- java - 有没有办法在 Java 中实现具有多个子节点的 LinkedList?
- blockchain - 一个智能合约有多少个 NFT?
- python - PostgreSQL(新部署)
- go - 如何 cgo 链接到使用 LLVM 的 libc++ 构建的库