HBase не хранит все записи

В моей базе данных MongoDB 1,2 млн записей. И я хочу программно хранить все эти данные в HBase. В основном я пытаюсь поместить каждую полученную запись в HBase в цикле. После завершения операции я получил всего 39912 записей на HBase.

Вот что я пробовал:

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();
}

person talha06    schedule 27.08.2013    source источник
comment
Можете ли вы проверить, имеют ли некоторые записи одинаковый идентификатор твита? Если это так, более поздняя запись переопределит предыдущую.   -  person zsxwing    schedule 27.08.2013
comment
Большое спасибо @zsxwing, я подумал, может быть, он все еще может вставлять записи, несмотря на дублирование. Было бы лучше, если бы вы разместили этот комментарий как ответ, чтобы направлять других. Тогда я отмечу это как ответ на вопрос.   -  person talha06    schedule 27.08.2013


Ответы (1)


Если какой-то ключ строки существует и вы поместите его снова, HBase Put переопределит прежний. Я думаю, что в ваших данных есть записи с одинаковым идентификатором твита (вы установили его в ключ строки). Вот почему некоторые записи исчезают.

person zsxwing    schedule 27.08.2013