有没有什么办法我们可以创建一个Hbase表作为hbase查询的输出?假设我有一个巨大的hbase表,然后我使用filter查询hbase表。我想把结果存储回Hbase表中。有可能吗?
发布于 2017-06-05 17:45:17
您可以拍摄正在运行的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表的扫描,并且不会影响区域服务器。
发布于 2015-09-01 02:21:19
您可以使用hbase作为map reduce的源和宿。我希望this能帮助你。请参阅7.2.4部分。由于您将并行编写put作为输出,因此时间也得到了优化。
发布于 2015-11-26 20:44:15
您可以编写一个作业,将其作为keyValue对从第一个表中读取,然后将其持久化到第二个表中。
如果您对性能感到担忧?然后,您可以编写一个map reduce作业来执行此操作。
https://stackoverflow.com/questions/32275474
复制相似问题