sqoop中splitby< column>--target dir的目的是什么

cpjpxq1n  于 2021-06-02  发布在  Hadoop
关注(0)|答案(5)|浏览(496)

当我们写作时,内心会发生什么 --split-by 在sqoop?
例子:

sqoop import --connect jdbc:mysql://localhost/test --username root --password training123 --query 'select * from  transaction where $CONDITIONS' --split-by Txnid --target-dir input/transaction
44u64gxh

44u64gxh1#

hadoop map reduce是关于分而治之的。
为了将数据划分为多个将以并行方式传输的独立片,sqoop需要找到--split by参数中指定的列的最小值和最大值
使用“拆分方式”选项时,应选择包含均匀分布值的列。
在查询中,我们告知数据均匀分布在基列“txnid”上,并使用该列进行拆分。

rt4zxlrg

rt4zxlrg2#

--拆分依据:用于指定用于为导入生成拆分的表的列。这意味着它指定在将数据导入集群时将使用哪个列来创建拆分。它可以通过实现更大的并行性来提高导入性能。sqoop根据用户通过import命令通过--split by指定的表的特定列中的值创建拆分。如果不可用,则使用输入表的主键创建拆分。
使用原因:有时主键的最小值和最大值之间的值分布不均匀(如果--split by不可用,则用于创建拆分)。在这种情况下,您可以指定其他具有适当数据分布的列来创建有效导入的拆分。

hsvhsicv

hsvhsicv3#

sqoop中的split by用于为Map器创建输入拆分。这对于并行性因子非常有用,因为拆分会使作业运行得更快。

vkc1a9a2

vkc1a9a24#

--split-by <column-name> -用于拆分工作单元的表的列
参考:sqoop用户指南
它指定在将数据导入集群时将使用哪个列来创建拆分。它可以通过实现更大的并行性来提高导入性能。

sshcrbum

sshcrbum5#

sqoop根据用户通过import命令通过--split by指定的表的特定列中的值创建拆分。如果不可用,则使用输入表的主键创建拆分。我们可以通过--split选择列,通过它可以得到最佳的拆分,从而提高并行性和更好的性能。

相关问题