我们是否可以创建一个 Hbase 表作为 hbase 查询的输出?假设我有一个巨大的 hbase 表,然后我使用过滤器查询 hbase 表。我想将结果存储回 Hbase 表中。可能吗?
最佳答案
您可以拍摄正在运行的 Hbase 表的快照并将其导出到 HDFS。 编写 Mapreduce 以根据需要在文件中获取数据,然后将数据批量加载到新的 Hbase 表中。 您也可以直接将数据写入 Hbase 表。 这样,在 Snapshot 上运行 MapReduce 也不会影响实际的 Hbase 表。 这就是您可以执行下面提到的所有步骤的方法
创建快照
snapshot 'HbaseTable','HbaseTableSnapshot'
导出快照到本地hdfs
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot HbaseTableSnapshot-copy-to /tmp -mappers 16
Driver Job Configuration to rum mapreduce on Hbase snapshot
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 表的扫描,并且也不会对区域服务器产生影响。
关于hadoop - 来自 HBase 查询的 Hbase 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32275474/