0

Cassandra database最近开始工作了。我试图将一些数据插入到Column Family我创建的一个中。

下面是我试图插入 Cassandra 数据库的代码。

在我的情况下,我20 columns在我的列族中,所以这意味着我需要在下面添加

mutator.newColumn("Column Name", "Column Value");

在我下面的代码中出现了20 次,这对我来说很丑陋。有什么办法,我可以通过使用反射或其他方式来简化下面的方法,这样如果我有超过 20 列,我不应该继续在下面的代码中添加额外的行。

for (int userId = id; userId < id + noOfTasks; userId++) {

    Mutator mutator = Pelops.createMutator(thrift_connection_pool);

    mutator.writeColumns(column_family, String.valueOf(userId),
            mutator.newColumnList(
            mutator.newColumn("a_account", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_advertising", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_avg_selling_price_main_cats", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_cat_and_keyword_rules", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_csa_categories_purchased", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_customer_service", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_demographic", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_favorite_searches", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_favorite_sellers", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_financial", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}")
            mutator.newColumn(some othe column, its value)
            .....
            .....
            .....
            ));


    mutator.execute(ConsistencyLevel.ONE);
}

简化上述方法的任何帮助将对我有很大帮助。我可以在这里使用反射吗?有什么想法吗?

4

1 回答 1

1

您可以预定义您的 ColumnList。假设您在名为“map”的变量中传入名称的映射和值的字符串版本。您的代码可能如下所示:

Mutator mutator = Pelops.createMutator(thrift_connection_pool);
ArrayList<Column> columnList = new ArrayList<Column>();
for (Map.Entry<String, String> entry : map.entrySet()) {
    columnList.add(mutator.newColumn(entry.getKey(), entry.getValue()));
}
mutator.writeColumns(column_family, String.valueOf(userId), columnList);
于 2013-04-09T04:18:45.387 回答