問題タブ [pycassa]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
744 参照

python - AllServersUnavailable 例外の処理方法

単一ノードで Cassandra インスタンス (v1.1.10) への単純な書き込み操作を実行したいと考えていました。一定の書き込みを処理する方法と、書き込み速度に追いつくことができるかどうかを確認したかっただけです.

長時間の書き込みの後 (カウンターが約 10M+ の場合)、コードがクラッシュし続け、次のメッセージが表示されます。

pycassa.pool.AllServersUnavailable: An attempt was made to connect to each of the servers twice, but none of the attempts succeeded. The last failure was timeout: timed out

queue_size=100役に立たなかったを設定しました。またcqlsh -3、スクリプトがクラッシュして次のエラーが発生した後、コンソールを起動してテーブルを切り捨てました。

Unable to complete request: one or more nodes were unavailable.

テーリング/var/log/cassandra/system.logではエラー サインは表示されませんが、Compaction、FlushWriter などでは INFO が表示されます。私は何を間違っていますか?

0 投票する
2 に答える
2428 参照

python - 複数の(python)クライアントを並行して使用してcassandraからすべての行をロードする

Cassandra が推奨する RandomPartitioner (または Murmur3Partitioner)を使用する場合、キーの md5 ハッシュを使用して行がクラスター全体に分散されるため、キーに対して意味のある範囲クエリを実行することはできません。これらのハッシュは「トークン」と呼ばれます。

それにもかかわらず、それぞれにトークンの範囲を割り当てることによって、多くのコンピューティング ワーカー間で大きなテーブルを分割することは非常に便利です。CQL3 を使用すると、トークンに対して直接クエリを発行できるように見えますが、次の pythonは機能しません... 編集: cassandra データベースの最新バージョンに対するテストに切り替えた後に機能し (doh!)、構文も更新します以下のメモ:

私はよりpythonicなインターフェースを好むので、理想的にはこれをpycassaで動作させたいと思っています。

これを行うより良い方法はありますか?

0 投票する
2 に答える
263 参照

python - pycassa で列タイプを指定する

pycassa でこれらの CLI コマンドと同等の処理を実行したい:

pycassaの同等性は何ですか? ありがとう

0 投票する
1 に答える
732 参照

python - python pycassa エンコーディングの問題

pycassa を使用して cassandra にデータを挿入する際に、エンコードの問題が発生します。フィールド名は「テキスト」で、コンテンツは非ASCII文字を含むツイートです。テキスト フィールドを encode('UTF-8') を使用してエンコードしようとすると、'unicode' から 'str' に変換されて表示されますが、それでも失敗しますか? 正確なエラーはこちら、

編集 1: これが Cassandra で失敗しているフィールドの場合、デフォルトのバリデータ型が定義されていませんか? それは問題になるでしょうか?タイプが指定されていない場合、カサンドラはそれを何として保存しますか?

EDIT 2: これは EDIT 1 に答えます。何かに気づきました。失敗しているフィールドにはデフォルトの型が定義されておらず、doc に従って、cassandra はそれを Hex バイト配列 (ByteType) として保存しようとしますが、UTF を挿入しようとしています。 8 エンコードされた文字列、これは問題でしょうか?

トレースバック:

トレースバック (最新の呼び出しが最後): ファイル "/opt/socialflow/prod/api-reporting/api-reporting/CassFH/app/c.py"、40 行目、送信 Mutator.send(self, *a, ** kw) ファイル "/usr/local/lib/python2.6/dist-packages/pycassa/batch.py​​"、126 行目、送信 allow_retries=self.allow_retries)

ファイル "/usr/local/lib/python2.6/dist-packages/pycassa/pool.py"、124 行目、new_f result = f(self, *args, **kwargs)
ファイル "/usr/local/lib /python2.6/dist-packages/pycassa/cassandra/Cas​​sandra.py"、1005 行目、batch_mutate の self.send_batch_mutate(mutation_map、consistency_level)
ファイル "/usr/local/lib/python2.6/dist-packages/pycassa/ cassandra/Cas​​sandra.py」、1013 行、send_batch_mutate args.write(self._oprot)
ファイル「/usr/local/lib/python2.6/dist-packages/pycassa/cassandra/Cas​​sandra.py」、5200 行oprot.trans.write(fastbinary.encode_binary(self, (self. class , self.thrift_spec))))UnicodeEncodeError: 'ascii' コーデックは位置 0 の文字 u'\xbf' をエンコードできません: 序数が範囲内にありません (128 )[2013-05-20 21:31:14、450] ルートクリティカル:

0 投票する
1 に答える
667 参照

python - pycassa を使用して列ファミリーを作成する

pycassaを使用してプログラムで列ファミリーを作成するにはどうすればよいですか? ドキュメントで見つけられませんでした。列ファミリーの操作はすべて、既存の列ファミリーを扱っているようです。

0 投票する
1 に答える
33 参照

python - pycassa インデックス式で OR を使用する

pycassa のメソッドを使用してOR演算子を表現する方法はありcrerate_index_clause()ますか? 2 つの句を作成して結果を比較できることはわかっていますが、1 つだけを作成するソリューションが欲しいです。

0 投票する
1 に答える
538 参照

python - Python と datetime モジュールを使用して、TimeUUIDType に基づいて Cassandra から列の範囲を取得します

次のようにテーブルをセットアップしました。

{"String" : {uuid1 : "String", uuid1: "String"}, "String" : {uuid : "String"}}

または...

(基本的に行ラベルとして Web サイトを取得し、datetime.datetime.now() に基づいて動的に生成された列を持ち、Cassandra の TimeUUIDType と文字列を値として持っています)

Pycassa を使用して、行と列の両方に基づいてデータのスライスを取得しようとしています。ただし、他の(より小さい)テーブルではこれを行いましたが、データセット全体をダウンロードして(または少なくとも1行にフィルタリングして)、順序付けられた辞書を使用してdatetimeオブジェクトと比較できました。

Pycassa multiget または get_indexed_slice 関数のようなものを使用して、特定の列と行を取得できるようにしたいと考えています。日時でのフィルタリングを可能にするこのようなものが存在しますか。現在のすべての試行で、次のエラー メッセージが表示されます。

TypeError: can't compare datetime.datetime to UUID

私がこれまでに思いついた最高のものは...

get_posixtime は次のように定義されています。

これは機能していないようです (期待したデータが返されません)。また、必要ではないように感じます。以下を使用して列のタイムスタンプを作成しています。

timestamp = datetime.datetime.now()

誰にもアイデアはありますか?これは、Pycassa (または別の python ライブラリ) がサポートするようなものですが、その方法がわかりません。

cqlsh で記述されている ps テーブル スキーマ:

ps

Pycassa で列範囲を指定できることは知っていますが、範囲の開始値と終了値に各行のエントリがあることを保証できないため、列が存在しない可能性があります。

0 投票する
1 に答える
439 参照

python - 複合行キー (UTF8Type、DateType) で Pycassa を使用して Cassandra 列ファミリーに挿入できません

次のスキーマを持つ Cassandra 列ファミリ (Pycassa を使用して作成) があります。

次の行で挿入しようとしています:

どこにtracker_keyある:

('cd7449e8-8f0d-4730-9ee4-ef60edfdd409', datetime.datetime(2013, 8, 14, 16, 47, 55, 856000))

これが機能することを期待しています-他のテーブルの日付型を行キーとして使用し、それらは扱います。さらに、Pycassa サイト ( http://pycassa.github.io/pycassa/assorted/composite_types.html ) のチュートリアルに従っているようです。

詳細については、Pycassa バージョン 1.9.0 と Cassandra 1.2.8 を使用しています。

ありがとう、

マット

編集:

奇妙なひねりを加えたイベントで、最初に受け取ったエラー メッセージは次のとおりです。

TypeError: A str or unicode value was expected, but datetime was received instead (2013-08-14 16:45:15.376000)

クエリを次のように変更してみました。

tracker_key = (str(dictionary_to_insert['session_id']), datetime.datetime.strftime(dictionary_to_insert['datestamp'], "%Y-%m-%d %H:%M:%S"))

つまり、日時を文字列に変更しました

次のエラーメッセージが表示されました。

困惑。