【问题标题】:how to delete rows from HBASE table by reading row keys from a text file如何通过从文本文件中读取行键从 HBASE 表中删除行
【发布时间】:2015-08-17 01:21:41
【问题描述】:

在我的一个项目中,我需要通过删除不再与银行关联的客户的行来维护 HBASE 表。

我得到一个包含 customerid 的文本文件(也是 HBASE 表中的行键)。文本文件中的每一行都包含唯一的客户 ID,用于从表中删除客户详细信息。

我认为我不能使用 TableMapReduceUtil.initTableMapperJob 来启动仅地图作业,因为地图类会期望输入来自表本身而不是 HDFS 上的文本文件。

【问题讨论】:

    标签: hadoop mapreduce hbase


    【解决方案1】:

    您可以使用NLineInputFormat 和TableOutputFormat 来编写您的map reduce 作业。

    使用Tableoutputformat,您可以在映射器中执行context.write(key, new Delete(key.toString().getBytes()))。

    【讨论】:

      【解决方案2】:

      Map reduce 可以用作 Hbase 的输入(源)和输出(接收器)。在您的情况下,您需要编写自己的 map reduce 以从输入中读取数据,然后使用 API 提供的 reducer

      TableMapReduceUtil.initTableReducerJob("targetTable",null,job);
      job.setNumReduceTasks(0);
      

      第二个参数为空,因为你使用的是API提供的reducer。您只需要处理行键并删除作为映射器的输出,reducer 会拾取它并执行他的工作。您可以找到基本用法here。不是您的确切解决方案,而是 mapreduce 和 hbase 使用背后的概念

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-25
        • 2013-03-23
        • 2015-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多