sqoop中reducer个数

Number of reducer in sqoop

sqoop 中默认有多少映射器和缩减器? (4 个映射器,0 个缩减器)。

如果在 sqoop import 中使用 --where--query 条件,那么会有多少个 reducer?

在本地集群中,在使用 --where or --query condition

后显示 0 个减速器

根据 sqoop 用户指南,Sqoop 从大多数数据库源并行导入数据。您可以指定用于执行导入的映射任务(并行进程)的数量 --num-mappers

参数。默认情况下,使用四个任务。就好像我们没有做任何聚合任务一样,reducer 任务将为零。更多详情 http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_free_form_query_imports

Sqoop 作业 仅限地图。没有reducer阶段。

例如,sqoop从Mysql导入具有4个映射器的HDFS将产生4个并发连接并开始获取数据。创建了 4 个映射器作业。数据将写入 HDFS 部分文件。没有减速器阶段。

聚合需要减速器。从 mysql 获取数据时,sqoop 仅使用映射器完成的 select 查询。

sqoop 中没有减速器。 Sqoop 只使用映射器,因为它进行并行导入和导出。每当我们编写任何查询(甚至是聚合查询,例如 count 和 sum)时,这些所有查询都在 RDBMS 上 运行 并且生成的结果由映射器使用 select 查询从 RDBMS 获取并加载到 hadoop 上平行地。因此,RDBMS 上的 where 子句或任何聚合查询 运行s,因此不需要缩减器。

对于大多数功能,sqoop 是一项 map-only 工作。 即使 free-form 查询中有聚合 该查询将在 RDBMS 上执行,因此没有缩减器。 但是对于一个特定选项“--incremental lastmodified”, 如果指定了“--merge-key”(用于合并 新的增量数据与先前提取的数据)。 在这种情况下,似乎也有一种方法可以指定减速器的数量 使用 属性 "mapreduce.job.reduces" 如下。

sqoop import -Dmapreduce.job.reduces=3 --incremental lastmodified --connect jdbc:mysql://localhost/testdb --table employee --username root --password cloudera --target-dir /user/cloudera/SqoopImport --check-column trans_dt --last-value "2019-07-05 00:00:00" --merge-key emp_id

“-D”属性应该在命令选项之前。