0

キーに基づいて行を取得するための 1 つの CQL のキーと、「IN」キーワードを使用してキーのリストを取得し、ORDER BY 句を持つ別の CQL を取得できる列ファミリを作成しようとしています。私が取得しているデータは、列名ではなく列の値からのものです。私が抱えている問題は、これを達成するために列ファミリーをセットアップしようとしていることです。列ファミリを作成するためのこの cli コマンドがありますが、挿入を行うと、主キーに関する奇妙な例外が発生します。以下は、列ファミリーが作成された後に列値の挿入を行う際の cli とエラーです。

列ファミリーを作成するために使用される cli コマンド:

create column family video_item_details 
with key_validation_class = 'CompositeType(IntegerType,UTF8Type)'
and comparator = 'UTF8Type'
and column_metadata = [
{column_name : key, validation_class: IntegerType, index_type: KEYS}
{column_name : name, validation_class : 'UTF8Type', index_type: KEYS}
{column_name : description, validation_class :'UTF8Type'}
{column_name : url, validation_class : 'UTF8Type'}
{column_name : play_time, validation_class : 'UTF8Type'}
{column_name : type, validation_class : 'UTF8Type'}
]
with caching='ALL';

挿入中のエラーは次のとおりです。

com.datastax.driver.core.exceptions.InvalidQueryException の挿入中にエラーが発生しました: 必須の PRIMARY KEY 部分 key2 がありません

実行しようとしていた挿入ステートメントは次のとおりです。

INSERT INTO video.video_item_details(key, name, description, url, play_time, type) values
(1,'Gettysburg','Gettysburg Movie Trailer','test','2:53','Streaming')

Cassandra にこの種のクエリを実行させる方法についてアドバイスをいただき、ありがとうございます。

よろしく、 -トニー

4

2 に答える 2

0

このメッセージは、「key2」列 (CompositeType の 2 番目の部分) が欠落していることを意味します。

しかし、アレックスがあなたに言ったように、これを行う正しい方法は、CompositeTypes を手動でマングルしようとする代わりに、CQL (つまり、cqlsh を使用して) からもテーブルを作成することです。「Cassandra チーム」の誰もが同じことを言うでしょう。出典: 私は Apache Cassandra プロジェクトの議長であり、DataStax Cassandra チームのリーダーです。

于 2013-08-02T04:21:40.057 に答える