2016-10-14 4 views
0

Я пытаюсь создать следующую таблицу, используя Cassandra PhantomНевозможно создать таблицу Кассандру с PartitionKey, PrimaryKey и ClusteringOrder

object itemId extends StringColumn(this) with PartitionKey[String] 
    object anotherItemId extends StringColumn(this) with PrimaryKey[String] 
    object similarity extends DoubleColumn(this) with ClusteringOrder[Double] with Descending 

Так что я хочу, чтобы иметь возможность получить все записи по itemId. И я хочу, чтобы их заказали similarity. Я установил anotherItemId как PrimaryKey, потому что itemId, similarity составной ключ не будет уникальным. Но я получаю следующее сообщение об ошибке:

com.websudos.phantom.exceptions.InvalidClusteringKeyException: Table similarities: When using CLUSTERING ORDER all PrimaryKey definitions must become a ClusteringKey definition and specify order. 

Это example показывает, что использование PartitionKey, PrimaryKey и ClusteringOrder возможно. Что я делаю не так?

ответ

0

Как указано в сообщении об ошибке, при указании порядка кластеризации вам необходимо указать один для каждой отдельной части ключа кластеризации. Если в этом примере указывается другое, пример неверен, и я обновлю его сейчас.

object itemId extends StringColumn(this) with PartitionKey[String] 
    object anotherItemId extends StringColumn(this) with ClusteringOrder[String] with Ascending 
    object similarity extends DoubleColumn(this) with ClusteringOrder[Double] with Descending 

Помните, PRIMARY_KEY = PARTITION_KEYS + CLUSTERING_KEYS, так что все ключи кластеризации, или то, что фантом вызывает PrimaryKey, нужно стать ClusteringOrder, когда вы хотите, чтобы определить порядок.

Это наложенное ограничение Кассандры, фантом просто дает вам ошибку быстрее, чем Кассандра.

+0

благодарит за ответ. Я закончил с тем же решением, за исключением того, что я поставил 'сходство' перед' anotherItemId', так как мне нужно упорядочить строки по его значению – Artem

 Смежные вопросы

  • Нет связанных вопросов^_^