sqoop是否使用reducer?

wixjitnu  于 2021-06-01  发布在  Hadoop
关注(0)|答案(2)|浏览(333)

如果在给定的select查询中执行了连接/聚合,sqoop是否运行reducer --query 参数?或者在sqoop中是否存在Map器和还原器同时运行的情况?
文档指定每个map任务将需要执行查询的一个副本,结果按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 ?

qni6mghb

qni6mghb1#

在你的命令里 sqoop 不使用减速机。然而,在某些情况下 sqoop 使用 reducer . 检查下面的例子取自这里的文档。

$ sqoop export \
    -Dmapred.reduce.tasks=2
    -Dpgbulkload.bin="/usr/local/bin/pg_bulkload" \
    -Dpgbulkload.input.field.delim=$'\t' \
    -Dpgbulkload.check.constraints="YES" \
    -Dpgbulkload.parse.errors="INFINITE" \
    -Dpgbulkload.duplicate.errors="INFINITE" \
    --connect jdbc:postgresql://pgsql.example.net:5432/sqooptest \
    --connection-manager org.apache.sqoop.manager.PGBulkloadManager \
    --table test --username sqooptest --export-dir=/test -m 2
lg40wkob

lg40wkob2#

join/计算将在rdbms上执行,其结果将被mapper用来传输到hdfs。不涉及减速机
--query 参数,则需要指定 --split-by 参数的列,该列应用于将数据切片为多个并行Map任务。此参数通常自动默认为主表的主键
$conditions将自动用生成的条件替换此占位符,指定要传输的数据片

相关问题