3

Cassandra 1.2 を使用しています。次の方法で CQL 3 を使用してテーブルを作成しました。

CREATE TABLE foo (
    user text PRIMARY KEY,
    emails set<text>
);

今、私はpycassaを通してデータをクエリしようとしています:

import pycassa
from pycassa.pool import ConnectionPool
pool = ConnectionPool('ks1', ['localhost:9160'])
foo = pycassa.ColumnFamily(pool, 'foo')

これは私に与えます

Traceback (most recent call last):
  File "test.py", line 5, in <module>
    foo = pycassa.ColumnFamily(pool, 'foo')
  File "/home/john/src/pycassa/lib/python2.7/site-packages/pycassa/columnfamily.py", line 284, in __init__
    self.load_schema()
  File "/home/john/src/pycassa/lib/python2.7/site-packages/pycassa/columnfamily.py", line 312, in load_schema
    raise nfe
pycassa.cassandra.ttypes.NotFoundException: NotFoundException(_message=None, why='Column family foo not found.')

これはどのように達成できますか?

4

5 に答える 5

5

If you have created your tables using CQL3 and you want to access them through a thrift based client; you will have to specify the Compact Storage property. e.g :

CREATE TABLE dummy_file_test
(
 dtPtn          INT,
 pxID           INT,
 startTm        INT,
 endTm          INT,
 patID          BIGINT,
 efile          BLOB,
 PRIMARY KEY((dtPtn, pxID, startTm))
)with compact storage;  

This is what i had to do while accessing CQL3 based column Families with Pycassa

于 2013-07-10T08:23:16.317 に答える
3

私は Cassandra 1.2.8 と pycassa 1.9.0 と CQL3 でテストしています。CREATE tableステートメントで使用される「WITH COMPACT STORAGE」を使用してCQL3で作成されたテーブルが、テーブル(列ファミリー)をpycassaに表示することを確認できました。残念ながら、テーブルを変更して「WITH COMPACT STORAGE」を DESCRIBE TABLE コマンドに表示する方法を見つけることができませんでした。THE ALTER TABLE WITH ステートメントを使用すると、その設定を変更できるはずですが、うまくいきません。

結果を確認するには、CQL3 を使用して 2 つのテーブルを作成します。1 つは WITH COMPACT STORAGE を使用し、もう 1 つはそれを使用せずに作成すると、結果を再現できます。

テーブルを削除してから、CREATE ステートメントの一部として「WITH COMPACT STORAGE」オプションを使用して再作成する必要があるという目標を達成するようです。データを失いたくない場合は、既存のテーブルの名前を変更し、正しいオプションで新しい空のテーブルを作成してから、データを目的のテーブルに戻します。もちろん、テーブルを正しく変更する方法を見つけることができない限り、可能であればより簡単になります。

于 2013-08-01T17:49:29.857 に答える
1

CQL3 で作成された列ファミリーは、pycassa が使用する Thrift API を使用できません。

さらに質問がある場合は、これを読むことができます。

于 2013-01-09T06:23:05.787 に答える
0

Pycassa は新しいバージョンの cassandra をサポートしていません。詳細については、Ival の回答とこちらを参照してください。pycassa の代替ソリューションについては、https: //pypi.python.org/pypi/cql/1.0.4を参照してください。

于 2013-04-11T18:06:19.930 に答える
0

列ファミリー (テーブル) が正しく定義されていないようです。実行cqlshしてからdescribe keyspace ks1;. 私の推測では、CF がリストに表示されないでしょう。キースペース名が正しいことを確認してください。

于 2013-01-07T20:00:31.413 に答える