我使用HFileOutputFormat将CSV文件批量加载到hbase表中。我只有map,没有job.setNumReduceTasks(0)的reduce任务。但是我可以看到一个 reducer 在运行,这是因为HFileOutputFormat启动了 reducer 吗?
以前,我在同一项工作中使用TableOutputFormat,但从未运行过reducer。我最近将映射任务重构为使用HFileOutputFormat,但是现在在进行此更改之后,我可以看到一个reducer正在运行。
其次,在reducer中出现以下错误,这是我以前使用TableOutputFormat以前没有得到的,这是否也与HFileOutputFormat有关?
错误:java.lang.ClassNotFoundException:com.google.common.base。前提条件
最佳答案
HFileOutputFormat确实启动了(对于必要的HFiles)缩小任务。
该错误会在此处弹出,Hadoop需要Google的Guava库才能生成HFiles。让Hadoop找到该库的最简单方法是将其从$HBASE_HOME/lib/
复制到$HADOOP_HOME/lib/
。寻找guava-<version>.jar
。