HBase 不存储所有记录

Posted

技术标签:

【中文标题】HBase 不存储所有记录【英文标题】:HBase doesn't store all records 【发布时间】:2013-08-27 07:28:03 【问题描述】:

我的 MongoDB 数据库中有 120 万条记录。我想以编程方式将所有这些数据存储在 HBase 中。基本上,我尝试将每个检索到的记录放到 HBase 循环中。操作完成后,我在 HBase 上只有 39912 条记录。

这是我尝试过的:

Configuration config = HBaseConfiguration.create();
String tableName = "storedtweet";
String familyName = "msg";
String qualifierName = "msg";
HTable table = new HTable(config, tableName);
// using Spring Data MongoDB to interact with MongoDB
List < StoredTweet > storedTweetList = mongoDAO.getMongoTemplate().findAll(StoredTweet.class);
for (StoredTweet storedTweet: storedTweetList) 
    Put p = new Put(Bytes.toBytes(storedTweet.getTweetId()));
    p.add(Bytes.toBytes(familyName), Bytes.toBytes(qualifierName), Bytes.toBytes(storedTweet.getMsg()));
    table.put(p);
    table.flushCommits();

【问题讨论】:

你能检查一些记录是否有相同的tweet id吗?如果是这样,后面的记录将覆盖前面的记录。 非常感谢@zsxwing,我想也许它仍然可以插入记录,尽管重复。如果您发布此评论作为指导他人的答案会更好。然后我将其标记为“问题的答案”。 【参考方案1】:

如果某个行键存在并且您再次放置它,HBase Put 将覆盖前者。我认为您的数据中有一些记录具有相同的推文 ID(您将其设置为行键)。这就是为什么有些记录会消失的原因。

【讨论】:

以上是关于HBase 不存储所有记录的主要内容,如果未能解决你的问题,请参考以下文章

Hbase操作与编程使用

使用 SparkSQL 从 HBase 获取所有记录

Hbase 更新用例

HBase列式存储

hbase启动问题记录

hbase 多条件查询or 怎么过滤掉不需要查的列