我的 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();
}
最佳答案
如果存在某些行键,然后再次放置,则HBase Put将覆盖前者。我认为有些记录中的数据具有相同的tweet ID(将其设置为行键)。这就是为什么一些记录消失的原因。