java—如何在hbasemapreduce作业中提供带有表的命名空间

qojgxg4l  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(329)

我正在使用hbase创建一个map reduce jon。所以我在mapper作业中从表中获取一些输入,然后使用reducer作业。要调用减速机作业,我正在使用此函数。

TableMapReduceUtil.initTableReducerJob(table, reducer, job);

这里的表是string类型的。我的问题是我需要在这里使用带有名称空间的表,但我不知道怎么做。
如果是制图员的工作。api正在为命名空间提供函数,即。

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

这里的表是org.apache.hadoop.hbase.tablename类型。
有人能告诉我在减速机工作中如何做到这一点吗?

iih3973s

iih3973s1#

所以,我只需要提供表名作为
namespace:tablename
它会在内部处理。

34gzjxbg

34gzjxbg2#

你想用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"));

使用这些方法可以使减速器连接到hdfs
顺便说一下,可以使用import或export命令将一个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

相关问题