val CF_USER_STATS = new ColumnFamily[java.lang.Long, String]("Standard2", LongSerializer.get, StringSerializer.get)
val m: MutationBatch = keyspace.prepareMutationBatch()
m.withRow(CF_USER_STATS, "acct1234").incrementCounterColumn("CounterColumn1", 1)
m.execute()
以上是创建一个专门用作Cassandra中的计数器的列族。无论出于何种原因,编译失败的原因如下:
type mismatch;
[error] found : com.netflix.astyanax.model.ColumnFamily[Long,String]
[error] required: com.netflix.astyanax.model.ColumnFamily[Comparable[_ >: String with Long <: Comparable[_ >: String with Long <: Comparable[_ >: String with Long <: java.io.Serializable] with java.io.Serializable] with java.io.Serializable] with java.io.Serializable,String]
[error] Note: Long <: Comparable[_ >: String with Long <: Comparable[_ >: String with Long <: Comparable[_ >: String with Long <: java.io.Serializable] with java.io.Serializable] with java.io.Serializable] with java.io.Serializable, but Java-defined class ColumnFamily is invariant in type K.
[error] You may wish to investigate a wildcard type such as `_ <: Comparable[_ >: String with Long <: Comparable[_ >: String with Long <: Comparable[_ >: String with Long <: java.io.Serializable] with java.io.Serializable] with java.io.Serializable] with java.io.Serializable`. (SLS 3.2.10)
[error] m.withRow(CF_USER_STATS, "acct1234")
答案 0 :(得分:0)
Astyanax ColumnFamily语法及说明
ColumnFamily<String, String> CF =
new ColumnFamily<String, String>(
"Standard1", // Column Family Name
StringSerializer.get(), // Key Serializer
StringSerializer.get()); // Column Serializer
现在,在你的情况下,你已经提到你的rowkey为Long类型,列为String,在更新计数器时你使用key作为字符串,这就是类型不匹配的原因。