gpt4 book ai didi

split - SQOOP 中 --split-by 和 --boundary-query 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 22:19:15 51 4
gpt4 key购买 nike

假设我们没有一个值均等分布的列,假设我们有一个这样的命令:

sqoop import \
...
--boundary-query "SELECT min(id), max(id) from some_table"
--split-by id
...

在这里使用 --boundary-query 而 --split-by 做同样的事情有什么意义?
有没有其他方法可以使用--boundary-query?
或者在没有键(唯一)列时更有效地拆分数据的任何其他方法?

最佳答案

--split-by id 将根据映射器的数量(默认为 4)将您的数据 均匀地拆分为

现在默认的边界查询是这样的。

--boundary-query "SELECT min(id), max(id) from some_table"

但是如果你知道 id val1 开始, val2 结束。那么计算 min()max() 操作就没有意义了。这将使 sqoop 命令执行速度更快。

您可以指定任何返回 val1val2 的任意查询。

编辑:

现在(1.4.7)在sqoop中没有办法指定不均匀的分区进行拆分。

例如,您有以下数据:
1,2,3,51,52,191,192,193,194,195,196,197,198,199,200

如果您在命令中定义了 4 个映射器。它将检查 min 和 max,在我们的例子中分别是 1 和 200。

然后它将它分成4部分:
1-50
51-100
101-150
151-200

是的,在这个第三个映射器(101-150)中,从 RDBMS 表中不会得到 任何

但是没有办法定义自定义分区,如:
1-10
51-60
190-200

对于大数据(数十亿行),实际上不适合像这样找到确切的值或使用其他工具先找到数据模式然后准备自定义分区。

关于split - SQOOP 中 --split-by 和 --boundary-query 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40838036/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com