HFileOutputFormat会启动减速器吗?

时间:2013-04-15 09:27:53

标签: hadoop hbase

我使用HFileOutputFormat将CSV文件批量加载到hbase表中。我只有map.setNumReduceTasks(0)的map和no reduce任务。但我可以看到减速器在工作中运行,这个减速器是否因为HFileOutputFormat而启动? 以前我使用TableOutputFormat进行相同的工作,从来没有运行reducer。我最近重构了map任务以使用HFileOutputFormat,但现在在这个更改之后,我可以看到一个reducer正在运行。

其次我在reducer中得到以下错误,我之前没有使用TableOutputFormat,这是否与HFileOutputFormat有关?

错误:java.lang.ClassNotFoundException:com.google.common.base.Preconditions

2 个答案:

答案 0 :(得分:2)

HFileOutputFormat确实启动了(对于HFiles必要的)reduce任务。

出现错误Hadoop需要Google的Guava库才能生成HFile。让Hadoop找到此库的最简单方法是将其从$HBASE_HOME/lib/复制到$HADOOP_HOME/lib/。寻找guava-<version>.jar

答案 1 :(得分:0)

是的,即使我们将Reducers的数量设置为零,HFileOutputFormat也会启动一个reducer任务来对mapper输出进行排序和合并,以使该文件与HTable兼容。 reducer的数量等于HBase表中的区域数

通过MapReduce作业here

找到准备HBase批量加载数据的示例代码
相关问题