在HBase bulkload过程中,如果rowkey和version都一致,无法取得最新导入的数据。
问题定位:
在HBase里,如果两个HFile中都有相同rowkey和version的数据,是靠HFile的fileinfo里的MAX_SEQ_ID_KEY来判断哪个文件是最新,MAX_SEQ_ID_KEY
越大的文件越新。
1.通过flush写的HFile文件有往fileinfo里面加MAX_SEQ_ID_KEY
public void appendMetadata(final long maxSequenceId, final boolean majorCompaction)
throws IOException {
writer.appendFileInfo(MAX_SEQ_ID_KEY, Bytes.toBytes(maxSequenceId));
writer.appendFileInfo(MAJOR_COMPACTION_KEY, Bytes.toBytes(majorCompaction));
appendTimeRangeMetadata();
}
2.而通过bulkload的HFileOutputFormat方式写的HFile没有往fileinfo里面加MAX_SEQ_ID_KEY
private void close(final HFile.Writer w) throws IOException {
if (w != null) {
w.appendFileInfo(StoreFile.BULKLOAD_TIME_KEY, Bytes.toBytes(System .currentTimeMillis()));
w.appendFileInfo(StoreFile.BULKLOAD_TASK_KEY, Bytes.toBytes(context .getTaskAttemptID().toString()));
w.appendFileInfo(StoreFile.MAJOR_COMPACTION_KEY, Bytes.toBytes(true)); w.close();
}
}
3.所以导致bulkload后最新的数据取不到,得在HFileOutputFormat加上MAX_SEQ_ID_KEY才行
分享到:
相关推荐
描述提到这是一个博客配套文件,包含了一个具体的示例,展示了如何使用MapReduce来实现Bulkload。这意味着文件中可能包括了Java代码,这些代码会执行以下步骤: 1. **数据预处理**:首先,使用MapReduce作业将源...
BulkLoad 是一种批量写入数据的方式,可以快速地将大量数据写入到 HBase 中。该方法可以减少写入时间,提高数据写入效率。 Hive 到 HBase 的批量写入 Hive 是一种基于 Hadoop 的数据仓库,可以存储和处理大量...
很快我将添加如何使用 reducer 以及使用 MR 驱动程序自动刷新所有放置的另一个版本,而无需使用 TAblemapper 类进行缓冲控制。 另一个例子: : 在添加的这个示例中,性能明显提高,将更多的缓冲项从 1 增加到 ...
在项目`hive-bulkload-hbase-master`中,你将找到一个示例项目,它演示了上述步骤的实现。这个项目可能包括了Hive和HBase的连接代码、数据预处理逻辑、MapReduce作业的配置以及加载HFiles的Java代码。通过阅读和理解...
为了解决这个问题,HBase提供了批量加载(Bulk Loading)机制,它允许我们将数据预先转换成HFile格式,然后一次性地快速加载到表中,极大地提高了数据导入速度。 批量加载的基本流程如下: 1. **生成SequenceFile*...
HBase是Apache Hadoop生态系统中的一个分布式、可扩展的大数据存储系统。它设计用于处理海量结构化数据,尤其是在大规模集群上。HBase 0.94版本是在2012年发布的,虽然现在已经有了更新的版本,但了解其在特定环境如...
hbase 常用参数含义,默认值,调优建议(必须参数,split,compaction,blockcache,memstore flush,hlog,zookeeper,其他,等相参数名称、含义、默认值、调优建议)
在大数据处理领域,Apache HBase是一个分布式的、版本化的NoSQL数据库,它构建于Hadoop之上,特别适合处理海量结构化数据。这篇博客“Hbase调用Java API实现批量导入操作”聚焦于如何利用Java编程语言高效地向HBase...
hbase批量加载 从RCFile进行HBase批量加载的临时代码 这将使用LoadIncrementalFiles从HFileOutputFormat2中Mapreduce写入的数据中加载HBase表。
这些方法允许我们灵活地定位到HBase表中的特定行或范围,返回结果可以是单个RowResult或一个RowResult集合。 3. **获取(get)操作**:获取操作用于根据行键获取HBase表中的一行数据。HbaseTemplate的`get`方法接受...
Hive 是一个基于 Hadoop 的数据仓库工具,而 HBase 是一个基于 Hadoop 的 NoSQL 数据库。它们都是大数据处理的重要组件。在数据处理过程中,经常需要将数据从 Hive 导入到 HBase 中。本文将详细介绍 Hive 数据导入 ...
4. **启用Bulk Load**:在应用开始前,需要调用`HBaseConfiguration`的`setBoolean("hbase.mapreduce.bulkload.max.load", true)`方法开启Bulk Load功能。 5. **使用`LoadIncrementalHFiles`工具**:最后,使用...
HBase 是一个开源的、分布式的、版本化的 NoSQL 数据库(也即非关系型数据库),它利用 Hadoop 分布式文件系统(Hadoop Distributed File System,HDFS)提供分布式数据存储。与传统的关系型数据库类似,HBase 也以...
然而,在多集群环境下,数据一致性成为一个挑战,因为很难保证所有任务同时完成,这可能导致短时间内数据不一致。为解决这个问题,引入了同步中心,将导入逻辑作为插件集成,实现了任务的调度、异构数据源的适配和...
HBase 是一个开源的、分布式的、版本化的 NoSQL 数据库(也即非关系型数据库),它利用 Hadoop 分布式文件系统(Hadoop Distributed File System,HDFS)提供分布式数据存储。与传统的关系型数据库类似,HBase 也以...
手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 ...2. HBase批量装载——Bulk load 3. HBase的协处理器(Coprocessor) 4. HBase事务 5. HBase数据结构
大数据时代,海量数据的存储和分析是一个巨大的挑战,给hadoop或者hbase集群添加数据压缩的能力,是必不可少的,通过压缩不但能节约磁盘空间,而且也能节省集群间网络带宽的损耗,从而间接提高了集群任务的整体执行...
1. **HBase Shell**:这是HBase自带的一个命令行接口,用户可以通过Java REPL(Read-Eval-Print Loop)与HBase交互。HBase Shell提供了创建表、删除表、插入数据、查询数据等基本操作,同时也支持复杂的条件查询和...
删除Hbase中某个表的一列值 命令 java -jar deleteOneColumn.jar(这个文件的路径) '表名' '列簇名' '列名'
3. HBase操作:掌握创建、删除、查询和更新表的方法,以及数据导入导出工具HBase Bulk Load的使用。 4. API与Shell命令:学习Java API和HBase Shell,进行基本的数据操作。 5. 性能优化:探讨HBase的性能瓶颈,学习...