在Sqoop中拆分<column> --target-dir的目的是什么?

时间:2016-06-25 06:14:18

标签: hadoop

当我们在sqoop中编写--split-by时会发生什么?

示例:

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

5 个答案:

答案 0 :(得分:1)

-分割:用于指定用于生成导入分割的表的列。这意味着它指定在将数据导入集群时将使用哪个列来创建拆分。它可以通过实现更大的并行度来增强导入性能。 Sqoop根据用户通过导入命令由--split-by指定的表特定列中的值创建拆分。如果不可用,则使用输入表的主键创建拆分。

使用原因:有时主键的最小值和最大值之间没有均匀的值分布(如果--split-by不可用,则用于创建拆分)。在这种情况下,您可以指定其他一些具有适当数据分布的列,以创建有效导入的拆分。

答案 1 :(得分:0)

Hadoop MAP Reduce就是分而治之。

为了将数据划分为多个将以并行方式传输的独立切片,Sqoop需要找到--split-by参数中指定的列的最小值和最大值

使用拆分选项时,应选择包含均匀分布值的列。

在查询中,我们告诉数据均匀分布在基本列&#39; Txnid&#39;并使用该列进行拆分。

答案 2 :(得分:0)

--split-by <column-name> - 用于拆分工作单位的表格列

参考:Sqoop User Guide

它指定在将数据导入群集时将使用哪个列来创建拆分。它可以通过实现更大的并行性来提高导入性能。

答案 3 :(得分:0)

sqoop中的

拆分用于为映射器创建输入拆分。它对并行性因素非常有用,因为拆分会使作业运行得更快。

答案 4 :(得分:0)

Sqoop根据表的特定列中的值创建拆分,该值由用户通过导入命令由--split-by指定。如果不可用,则使用输入表的主键创建拆分。我们可以通过--split-by选择列,这样可以实现最佳拆分,从而提高并行度和更好的性能。