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 不存储所有记录的主要内容,如果未能解决你的问题,请参考以下文章