如何在HbaseMapReduce Job中为表提供名称空间

时间:2018-05-07 14:01:10

标签: java hadoop mapreduce hbase

我正在使用Hbase创建Map Reduce Jon。所以我从mapper作业中的表中获取一些输入,然后我使用Reducer Job。要调用reducer Job,我正在使用此函数。

TableMapReduceUtil.initTableReducerJob(table, reducer, job);

此表为Type String。我的问题是我需要在这里使用带有命名空间的表,我不知道该怎么做。

如果是mapper Job。 Api为NameSpace提供功能,即

TableMapReduceUtil.initTableMapperJob(table, scan, mapper, outputKeyClass, outputValueClass, job);

此表的类型为org.apache.hadoop.hbase.TableName。

那么有人能告诉我如何在减速机工作中这样做吗?

2 个答案:

答案 0 :(得分:0)

我说你想使用mapreduce作业来读取你的hbase表并将一些数据写入hdfs?如果是这样 看这里

    void org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initTableMapperJob
    (String table, Scan scan, Class<? extends TableMapper> mapper, 
Class<?>     outputKeyClass,
     Class<?> outputValueClass, Job job, boolean addDependencyJars) throws IOException

此方法可以在设置中添加您的作业(org.apache.hadoop.mapreduce.Job;)。

job.setJarByClass(MapReduceReaderHbaseDriver.class);  

job.setReducerClass(WordCountHBaseReducer.class); 

 FileOutputFormat.setOutputPath(job, new Path("hdfspath"));

使用这些方法可以使reducer连接到hdfs

BTW从一个hbase表转换到另一个hbase表,您可以使用导入或导出命令

例如

  (1)old cluster:./hbase org.apache.hadoop.hbase.mapreduce.Export test hdfs://new cluster ip:9000/dic/test
  (2)new cluster:./hbase org.apache.hadoop.hbase.mapreduce.Import test hdfs://new cluster ip:9000/dic/test

答案 1 :(得分:0)

所以,我只需要提供表名为

<强>名称空间:表名

它将在内部处理它。