使用Astyanax客户端将数据插入Cassandra数据库

时间:2013-04-18 22:02:59

标签: java cassandra astyanax

问题陈述: -

我正在尝试将数据插入到Cassandra数据库中。我正在使用Netflix/Astyanax client

以下是使用upsertCassandra database数据转换为Astyanax client的代码。

在我的下面的方法中,它接受两个参数。一个是userId我将用作RowKeyattributes地图,其中包含column name作为关键字,而column value作为值Astyanax client地图。

现在我如何使用接受这两个参数的以下方法将upsert data attributes用于Cassandra数据库?

我主要关注upsert地图。我该如何将该地图用于/** * Performs an upsert of the specified attributes for the specified id. */ public void upsertAttributes(final String userId, final Map<String, String> attributes) { MutationBatch m = CassandraAstyanaxConnection.getInstance().getKeyspace().prepareMutationBatch(); m.withRow(CassandraAstyanaxConnection.getInstance().getEmp_cf(), userId) .putColumn(attributeName from attributesMap, attributeValue from attributesMap, null) ; try { m.execute(); } catch (ConnectionException e) { StringBuilder message = new StringBuilder(); message.append("Failed to read from C* = '").append(e).append("'. "); LOG.error("Failed to write data to C*", e); throw new RuntimeException("failed to write data to C*", e); } } 数据到Cassandra数据库?

{{1}}

1 个答案:

答案 0 :(得分:2)

你几乎已经给出了解决方案,但我认为你不清楚

 MutationBatch m = CassandraAstyanaxConnection.getInstance().getKeyspace().prepareMutationBatch();
 ColumnListMutation<String> clm = m.withRow(CassandraAstyanaxConnection.getInstance().getEmp_cf(), userId);
 for(String key: attributeMap.keySet()){
     clm.putColumn(key, attributeMap.get(key), null);
 }

try {
    m.execute();
} catch (ConnectionException e) {
    e.printStackTrace();
}

基本上 putColumn 具有不同的重载变体,因此它将支持cassandra支持的所有数据类型。