如何将大表从oracle数据库sqoop到hdfs?



我的一个 Oracle 表包含 2.65 亿条记录,我需要将该表从 Oracle 数据库推送到 hdfs,但此表没有任何主键/唯一列。因此,我不能使用多个映射器。如果我使用多个映射器,则必须指定按列拆分。 什么是最好的方法来吝啬桌子。 任何线索都值得赞赏。

为了使用多个映射器,您需要一个--split-by参数。 要选择的最佳列是在所有 265m 行中不为 null 且均匀分布的列。 主键满足该条件,因为它是顺序的并且位于所有行中。

任何均匀分布在数据集中的列都可能是--split-by选择的不错选择。 @yammanuruarun发布的链接包括--boundary-query参数,以帮助限制 RDBMS 返回这些行所必须执行的工作。 我建议对你的-m1,2,3,5,8使用Fibbonacci序列。

另外,请查看: 运行 Sqoop 导入和导出时如何找到最佳映射器数量?

最新更新