Проблемы с компиляцией кода scala с помощью клиента astyanax

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")

person Mad Dog    schedule 01.05.2013    source источник


Ответы (1)


Синтаксис 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, и при обновлении счетчика вы используете ключ в качестве своей строки, поэтому это несоответствие типов.

person abhi    schedule 02.05.2013