Sqoop 是否使用 Reducer?
Does Sqoop use Reducer?
如果在 select 查询中执行 join/aggregation,Sqoop 运行 reducer 是否使用 --query
参数?或者在 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
是如何在 table 首先使用 $CONDITIONS
进行分区的地方发生的?
Join/Computation 将在 RDBMS 上执行,其结果将由 mapper 用于传输到 HDFS。
不涉及减速器
使用--query
参数,您需要指定--split-by
参数与应该用于切片的列
您的数据进入多个并行地图任务。该参数通常自动默认为
main table
的主键
$CONDITIONS 将自动用指定要传输的数据切片的生成条件替换此占位符
在您的特定命令中,sqoop
不使用减速器。
但是在某些情况下,sqoop
会使用 reducer
。检查以下取自 document here.
的示例
$ 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
如果在 select 查询中执行 join/aggregation,Sqoop 运行 reducer 是否使用 --query
参数?或者在 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
是如何在 table 首先使用 $CONDITIONS
进行分区的地方发生的?
Join/Computation 将在 RDBMS 上执行,其结果将由 mapper 用于传输到 HDFS。 不涉及减速器
使用--query
参数,您需要指定--split-by
参数与应该用于切片的列
您的数据进入多个并行地图任务。该参数通常自动默认为
main table
$CONDITIONS 将自动用指定要传输的数据切片的生成条件替换此占位符
在您的特定命令中,sqoop
不使用减速器。
但是在某些情况下,sqoop
会使用 reducer
。检查以下取自 document here.
$ 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