Hive 当少数表没有主键时,sqoop以并行方式导入所有表

Hive 当少数表没有主键时,sqoop以并行方式导入所有表,hive,sqoop,Hive,Sqoop,我想从Mysql中的模式导入所有具有并行性的表。架构中很少有表具有主键,很少有表不具有主键。如果我们设置了没有主键的映射器(--m>1)表的数量,则会失败 如何导入所有具有并行性的表?如果您有整数列,而不是平均分布的PK,您可以将其用作拆分依据,跳过我在这里写的所有内容并阅读以下内容: 如果您有一些列组合,可以确定地定义行的顺序(组合主键候选),则可以使用row_number,请参阅 是否可以使用不确定的行数?sqoop将计算查询以确定获取范围的最小值和最大值,然后在不同的映射器中使用过滤器执行

我想从Mysql中的模式导入所有具有并行性的表。架构中很少有表具有主键,很少有表不具有主键。如果我们设置了没有主键的映射器(--m>1)表的数量,则会失败


如何导入所有具有并行性的表?

如果您有整数列,而不是平均分布的PK,您可以将其用作拆分依据,跳过我在这里写的所有内容并阅读以下内容:

如果您有一些列组合,可以确定地定义行的顺序(组合主键候选),则可以使用row_number,请参阅

是否可以使用不确定的行数?sqoop将计算查询以确定获取范围的最小值和最大值,然后在不同的映射器中使用过滤器执行相同的查询以获取范围,如果行数不确定,那么同一行可能会出现在不同的范围中,因此,答案是否,应该是确定的

如果您没有这样的复合键,那么您可能可以在Oracle中使用一些其他方法,例如
rowid
,用于相同的目的(仅当导入作业范围内的表是静态的,因为rowid可能会更改,例如,如果删除并重新插入某些行,则会重新加载表)。如果是MySQL,那么不幸的是,您没有这样的列。唯一的解决方案是将自动增量序列代理主键添加到表中并填充它