Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database Sqoop是否使用减速机?_Database_Hadoop_Mapreduce_Sqoop - Fatal编程技术网

Database Sqoop是否使用减速机?

Database Sqoop是否使用减速机?,database,hadoop,mapreduce,sqoop,Database,Hadoop,Mapreduce,Sqoop,如果在使用--query参数给出的select查询中执行了连接/聚合,Sqoop是否运行reducer?或者在Sqoop中是否存在映射器和还原器同时运行的情况 指定每个映射任务将需要执行查询的一个副本,结果按Sqoop推断的边界条件进行分区 $ sqoop import \ --query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \ --split-by a.id --target-dir /

如果在使用
--query
参数给出的select查询中执行了连接/聚合,Sqoop是否运行reducer?或者在Sqoop中是否存在映射器和还原器同时运行的情况

指定每个映射任务将需要执行查询的一个副本,结果按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

在上面的示例中,当首先使用
$CONDITIONS
对表进行分区时,
联接是如何发生的?

联接/计算将在RDBMS上执行,其结果将由映射器用于传输到HDFS。 不涉及减速器

使用
--query
参数,您需要指定
--split by
参数以及应该用于切片的列 将数据转换为多个并行映射任务。此参数通常自动默认为 主表的主键


$CONDITIONS将自动用生成的条件替换此占位符,指定要传输的数据片

在特定命令中,
sqoop
不使用reducer。 然而,在某些情况下,当
sqoop
使用
reducer
时。检查以下示例,这些示例取自


看起来像是一个采访问题。那么,这是否意味着在数据库执行
连接之后,每个映射器使用
--split by
对数据进行分区?如果是这种情况,那么查询执行将是瓶颈,只有数据传输到Hadoop将是并行的。你可能会在这里得到答案是的,但是,只有当要导出的数据被
切片并准备好发送到HDFS时,映射程序才会出现。这个过程必须等待DB执行
聚合
。那么,这是唯一的情况还是还有其他情况?您一定已经意识到sqoop是一组工具,这里sqoop的工作方式由
连接器定义。总是可以编写一个新的连接器,它的生命周期中有一个减速器。到目前为止,我知道这是一个捆绑的标准功能,但自定义代码总是可以带来一个减速器,这取决于设计。
$ 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