【问题标题】:How to provide namespace with table in HbaseMapReduce Job如何在 HbaseMapReduce Job 中为表提供命名空间
【发布时间】:2018-05-07 14:01:09
【问题描述】:

我正在使用 Hbase 创建 Map Reduce Jon。所以我从映射器作业中的表中获取一些输入,然后我正在使用减速器作业。为了调用reducer Job,我正在使用这个函数。

TableMapReduceUtil.initTableReducerJob(table, reducer, job);

这里的表是字符串类型的。我的问题是我需要在这里使用带有命名空间的表,我不知道该怎么做。

在映射器作业的情况下。 Api 为 NameSpace 提供功能,即

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

这里的表是 org.apache.hadoop.hbase.TableName 类型的。

那么谁能告诉我如何在 reducer 工作中做到这一点?

【问题讨论】:

    标签: java hadoop mapreduce hbase


    【解决方案1】:

    所以,我只需要提供表名

    命名空间:表名

    它会在内部处理它。

    【讨论】:

      【解决方案2】:

      我猜你想使用 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

      顺便说一句,您可以使用导入或导出命令从一个 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
      

      【讨论】:

      • 我想从一个表中获取数据并在处理后将该数据复制到另一个表中。这些表特别是名称空间。所以在reducer工作中我怎么会说我想把我的数据写到这个有这个命名空间的表中
      猜你喜欢
      • 2013-12-28
      • 2010-09-06
      • 1970-01-01
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多