来自 HBase 查询的 Hbase 表

Posted

技术标签:

【中文标题】来自 HBase 查询的 Hbase 表【英文标题】:Hbase Table from HBase query 【发布时间】:2015-08-28 16:14:26 【问题描述】:

无论如何我们可以创建一个 Hbase 表作为 hbase 查询的输出吗?假设我有一个巨大的 hbase 表,然后我使用过滤器查询 hbase 表。我想将结果存储回 Hbase 表中。有可能吗?

【问题讨论】:

所以第一个表的结果应该存储在一个新的 hbase 表中 - 所有这些都应该一次性完成? @Ramzy 是的。我想将结果存储到另一个 Hbase 表中。或 HFile。不一定是一口气。 【参考方案1】:

您可以拍摄正在运行的 Hbase 表的快照并将其导出到 HDFS。 编写 Mapreduce 以在文件中获取所需的数据,然后批量加载到新的 Hbase 表。 您也可以直接将数据写入 Hbase 表。 这样,在快照上运行 MapReduce 也不会影响实际的 Hbase 表。 这就是您可以执行以下所有步骤的方法

创建快照

snapshot 'HbaseTable','HbaseTableSnapshot'

将快照导出到本地 hdfs

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot HbaseTableSnapshot-copy-to /tmp -mappers 16

驱动程序作业配置到 Hbase 快照上的 rum mapreduce

    String snapshotName="HbaseTableSnapshot";
    Path restoreDir = new Path("hdfs://quickstart.cloudera:8020/tmp");
    String  hbaseRootDir =  "hdfs://quickstart.cloudera:8020/hbase";

TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, // Snapshot name
                    scan, // Scan instance to control CF and attribute selection
                    DefaultMapper.class, // mapper class
                    NullWritable.class, // mapper output key
                    Text.class, // mapper output value
                    job,
                    true,
                    restoreDir);

同样在 Hbase 快照上运行 mapreduce 将跳过对 Hbase 表的扫描,也不会对区域服务器产生影响。

【讨论】:

【参考方案2】:

您可以使用 hbase 作为 map reduce 的源和接收器。我希望this 能帮到你。参见 7.2.4 节。由于您将并行编写 put 作为输出,因此时间也得到了优化。

【讨论】:

感谢您的想法。但我的要求是我可以使用特定版本的列查询 hbase 表,然后将结果存储到 hbase 表中。 好的,是什么阻止您为第一个表设置扫描的最大版本。您可以使用 scan.setmaxVersions() 并获取所有版本。 要求是我需要从表中选择一个特定版本,然后通过配置单元查询它。所以我需要将结果存储回 hbase 表以便通过 hive 查询【参考方案3】:

您可以编写一个作业以从第一个表中读取键值对,然后将其保存在第二个表中。

如果您担心性能?那么你可以编写一个 map reduce 作业来做到这一点。

【讨论】:

【参考方案4】:

您不能直接查询 hbase 并在其中创建另一个包含您的输出的表,但您可以编写 map reduce 来做同样的事情。除了 map reduce,如果您在 hbase 上使用 Apache Phoenix,您将能够编写查询来选择数据并将其存储到 hbase 表中。

【讨论】:

【参考方案5】:

聪明又好主意...

您可以使用 HappyBase 来完成此操作,它是我们在生产服务中使用的 Python 前端。

但是,如果您实际上是在谈论 1 亿加返回值 - 我不建议这样做。多达 10-20 百万条记录,您可以获得良好的吞吐量(我们平均每秒插入 8k 条记录。围裙 0.5M/分钟)。

【讨论】:

以上是关于来自 HBase 查询的 Hbase 表的主要内容,如果未能解决你的问题,请参考以下文章

利用hive-hbase表做hive表快速入库hbase功能,纬度表的查询

Apache Drill 查询 HBase 表

HBase 3HBase练习题-学生课程表维护与查询

0762-5.16.2-Impala查询HBase表字段顺序不正确异常分析

HBase 常用java api获得客户端,创建表,查询,删除

Hive + HBase,用HQL查询HBase