如果在使用 --query
参数给出的选择查询中执行连接/聚合,Sqoop 是否运行 reducer?或者在 Sqoop 中是否存在同时运行映射器和缩减器的情况?
Documentation指定每个映射任务都需要执行查询的副本,结果按 Sqoop 推断的边界条件进行分区。
$ sqoop import \
--query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \
--split-by a.id --target-dir /user/foo/joinresults
在上面的示例中,JOIN
如何在首先使用 $CONDITIONS
对表进行分区的地方发生?
最佳答案
Join/Computation 将在 RDBMS 上执行,其结果将由 mapper 使用以传输到 HDFS。 不涉及 reducer
使用--query
参数,你需要在--split-by
参数中指定应该用于切片的列
您的数据进入多个并行 map 任务。该参数通常自动默认为
主表的主键
$CONDITIONS 将自动用指定要传输的数据切片的生成条件替换此占位符
关于database - Sqoop 是否使用 Reducer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49511479/