当我们在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
答案 0 :(得分:1)
-分割:用于指定用于生成导入分割的表的列。这意味着它指定在将数据导入集群时将使用哪个列来创建拆分。它可以通过实现更大的并行度来增强导入性能。 Sqoop根据用户通过导入命令由--split-by指定的表特定列中的值创建拆分。如果不可用,则使用输入表的主键创建拆分。
使用原因:有时主键的最小值和最大值之间没有均匀的值分布(如果--split-by不可用,则用于创建拆分)。在这种情况下,您可以指定其他一些具有适当数据分布的列,以创建有效导入的拆分。
答案 1 :(得分:0)
Hadoop MAP Reduce就是分而治之。
为了将数据划分为多个将以并行方式传输的独立切片,Sqoop需要找到--split-by参数中指定的列的最小值和最大值
使用拆分选项时,应选择包含均匀分布值的列。
在查询中,我们告诉数据均匀分布在基本列' Txnid'并使用该列进行拆分。
答案 2 :(得分:0)
--split-by <column-name>
- 用于拆分工作单位的表格列
它指定在将数据导入群集时将使用哪个列来创建拆分。它可以通过实现更大的并行性来提高导入性能。
答案 3 :(得分:0)
拆分用于为映射器创建输入拆分。它对并行性因素非常有用,因为拆分会使作业运行得更快。
答案 4 :(得分:0)
Sqoop根据表的特定列中的值创建拆分,该值由用户通过导入命令由--split-by指定。如果不可用,则使用输入表的主键创建拆分。我们可以通过--split-by选择列,这样可以实现最佳拆分,从而提高并行度和更好的性能。