問題タブ [thrift]
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.
php - Cassandraスーパーカラムから最近の10個の値にアクセスするにはどうすればよいですか
Cassandra から最近の 10 個の値にアクセスするにはどうすればよいですか。特定のスーパー カラムから最近の値を取得する必要があります。結果を取得していますが、正しくソートされていません。結果を降順で並べ替える必要があります(列名/タイムスタンプに基づいて最新のものを先に)
php - カサンドラの特定の列から最大値を取得する方法は?
Cassandra の特定の列から最大値を取得するにはどうすればよいですか? タグ名を名前として、クリック数を値としてCassandraに保存しています。最も人気のあるタグ (クリック数に基づく) を調べる必要がありますか? 私を助けてください
例 :
supercolumn : movie columnname : "matrix" value : 10(クリック数)
supercolumn : movie columnname : "titanic" value : 0(クリック数)
supercolumn : movie columnname : "avatar" value : 5(クリック数)
今、それぞれマトリックス、アバター、タイタニックのような結果を取得する必要があります(値のdescに基づいて)
javascript - Node.js/JavaScript 用の Thrift または Cassandra クライアントはありますか
Node.js デプロイメントで Cassandra の使用を開始したいのですが、Node.js および/または JavaScript 用の Thrift または Cassandra クライアントが見つかりません。
ありますか?
Thrift接続を生成する簡単な方法はありますか?
更新:この質問に対する簡単な答えは「いいえ」です。Cassandra と互換性のある Thrift 用の JS クライアントはありません。
さらなる更新: Cassandra の次のリリース (執筆時点では 0.8) では、Avro API がサポートされる予定です。Avro サポート用の node.js モジュールが既にあります。
javascript - Cassandra (JSON プロトコル) との Thrift JS の互換性
SVN の最新の Thrift ビルドから JavaScript をターゲットとする Cassandra の Thrift lib を生成しました。
ただし、提供された js thrift クライアント ライブラリに次のステートメントがあることに気付きました。
このクライアントは JSON プロトコルのみを話すことができ、サポートされているトランスポートは AJAX のみです。
JSON プロトコルが Cassandra と互換性があるかどうか知っている人はいますか?
これを node.js ソケットを使用するように移植する予定であるため、トランスポートは問題ではありませんが、JSON プロトコルで Cassandra に接続できるかどうかを知る必要があります。
Thrift と Cassandra のドキュメントはどちらも、この面では非常に軽いです。
protocol-buffers - Apache thrift、構造体がそれ自体を含む
データのシリアル化の倹約を検討しています。しかし、ドキュメントは言う
循環構造体 - 構造体には、その前に宣言された構造体のみを含めることができます。構造体もそれ自体を含むことはできません
私たちの要件の1つは
- 構造体A
- 子アイテム一覧
- アイテム (アイテムは構造体 A )
- 子アイテム一覧
だから、要件を読んで、どのレベルでも構造体をそれ自体に含めることはできませんか? 上記のように循環モデルで使用できますか。構造体は構造体の直接のメンバーではありませんが、他のメンバーがあり、構造体が含まれています。
彼らの文書はあまり説明的ではありません。
スリフトでそれは可能ですか?protobuf はそれをサポートしていますか?
nosql - Cassandra ランダム読み取り速度
データ ストア用にまだ Cassandra を評価しています。非常に簡単なテストとして、ローカル マシンの Keyspace1/Standard1 列ファミリに 4 列の値を挿入しました。これは、約 100 バイトのデータになります。次に、行キーでできる限り速く読み返しました。160,000/秒で読み返すことができます。偉大な。
次に、X が (1..10) で Y が (1..100,000) の XY の形式のキーを持つ 100 万の同様のレコードを入力し、ランダムなレコードをクエリしました。パフォーマンスは毎秒 26,000 クエリに低下しました。これは、サポートが必要なクエリ数 (約 1,500/秒) をまだはるかに上回っています。
最後に、1.1 から 10.1000000 までの 1,000 万件のレコードを入力し、1,000 万件のレコードの 1 つをランダムにクエリしました。1 秒あたり 60 クエリというパフォーマンスは最悪で、ディスクは狂ったように激しく動き回っています。
また、データのサブセット、たとえば 3,000,000 から 3,001,000 の間の 1,000 レコードを要求すると、最初はゆっくりと返され、その後キャッシュされると、1 秒あたり最大 20,000 クエリまで高速化され、ディスクが異常にならなくなることも確認しました。
何十億ものレコードを Cassandra に保存し、1 秒あたり 5 ~ 6,000 の速度で取得していることを読んだことがありますが、1,000 万件のレコードしかないので、それに近づくことはできません。私が間違っていることは何か分かりますか?デフォルトから変更する必要がある設定はありますか? 私は6ギガのRAMを搭載したオーバークロックされたCore i7ボックスを使用しているので、それがマシンではないと思います.
行キーを介して1つの列から1つの値を要求するために8つのスレッドに生成しているレコードをフェッチするコードは次のとおりです。
列パス cp = 新しい列パス(); cp.Column_family = "Standard1"; cp.Column = utf8Encoding.GetBytes("サイト"); 文字列キー = (1+sRand.Next(9)) + "." + (1+sRand.Next(1000000)); ColumnOrSuperColumn logline = client.get("Keyspace1", key, cp, ConsistencyLevel.ONE);
洞察をありがとう
c++ - thrift ファイルの変更後の C++ リンカ エラー
これは倹約よりも C++ リンカ エラーに関連していると思います。thrift ファイルに変更を加え、cpp および Java クラスを再生成しました。この変更の後、cpp でリンカー エラーが発生するようになりました。ここにエラーがあります
未定義のシンボル:
"com::XXXX::thrift::employee::SavingsInfo::operator<(com::XXXX::thrift::employee::SavingsInfo const&) const", referenced from:
std::less::operator()(com::XXXX::thrift::employee::SavingsInfo const&, com::XXXX::thrift::employee::SavingsInfo const&) constin employee_types.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [ThriftCPPSamples] Error 1
SavingsInfo 型をthrift ファイルに追加しました。これが私が行った変更です。ドキュメントに記載されているすべてのオプションをg ++に与えます。私は、、、を-I/usr/local/include/thrift
与え
-I/path-to-boost
まし-L/path-to-boost-lib
た-lthrift
。しかし、変更後、上記のリンカーエラーが発生し始めました。この理由が理解できませんでした。エラーは、倹約によって生成されたものを指しています。エラーの原因は何ですか?
このエラーは「operator <」に関するものなので、関連するコードのみ掲載しています。完全なコードは、最後に提供される 2 つのリンクから入手できます。
employee_types.h
employee_types.cpp
私が試した他のいくつかのこと:
- set<SavingsInfo> の代わりに、SavingsInfo を使用すると問題なく動作します。
- これがどこで使用されているのかわからなかったので、employee_types.h に「operator <」をコメントしました。次のビルドエラーが発生しました
Building file: ../src/employee_types.cpp
Invoking: GCC C++ Compiler
g++ -I/usr/local/include/thrift -I/Users/raghava/Software/Boost_C++_Library/boost_1_43_0 -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/employee_types.d" -MT"src/employee_types.d" -o"src/employee_types.o" "../src/employee_types.cpp"
/usr/include/c++/4.2.1/bits/stl_function.h: In member function 'bool std::less<_Tp>::operator()(const _Tp&, const _Tp&) const [with _Tp = com::xxxx::thrift::employee::SavingsInfo]':
/usr/include/c++/4.2.1/bits/stl_tree.h:982: instantiated from 'std::pair::iterator, bool> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_insert_unique(const _Val&) [with _Key = com::xxxx::thrift::employee::SavingsInfo, _Val = com::xxxx::thrift::employee::SavingsInfo, _KeyOfValue = std::_Identity, _Compare = std::less, _Alloc = std::allocator]'
/usr/include/c++/4.2.1/bits/stl_set.h:307: instantiated from 'std::pair, _Compare, typename _Alloc::rebind<_Key>::other>::const_iterator, bool> std::set<_Key, _Compare, _Alloc>::insert(const _Key&) [with _Key = com::xxxx::thrift::employee::SavingsInfo, _Compare = std::less, _Alloc = std::allocator]'
../src/employee_types.cpp:163: instantiated from here
/usr/include/c++/4.2.1/bits/stl_function.h:227: error: no match for 'operator<' in '__x < __y'
make: *** [src/employee_types.o] Error 1
これら 2 つのファイルの完全なソース コードは、以下のリンクにあります。他のリンクはコメントにあります (評判が 10 ポイントになるまで投稿できません)。
employee_types.cpp -- http://pastebin.com/7dLtstCK
employee_types.h -- http://pastebin.com/JGzE8V6J
ありがとうございました。
よろしく、ラガヴァ。
mapreduce - Pig 経由で map/reduce ジョブを送信するときに jar をバンドルしますか?
Hadoop、Pig、および Cassandra を組み合わせて、単純な Pig クエリを使用して Cassandra に保存されているデータを操作できるようにしようとしています。問題は、CassandraStorage で実際に動作する Map/Reduce ジョブを Pig に作成させることができないことです。
私がしたことは、自分のクラスタ マシンの 1 つから storage-conf.xml ファイルを contrib/pig (Cassandra のソース ディストリビューション) のマシンの上にコピーし、それらを cassandra_loadfun.jar ファイルにコンパイルしたことです。
次に、すべての jar を含めるように example-script.pig を調整しました。
したがって、私が間違っていなければ、jar は Hadoop に送信されるジョブにバンドルする必要があります。しかし、ジョブを実行すると、例外がスローされます。
リサイクルライブラリが明示的にリストされており、バンドルする必要があるため、どれがわかりませんか?
c++ - TNonblockingServer、TThreadedServer、および TThreadPoolServer のうち、どれが私の場合に最適ですか?
私たちの分析サーバーは c++ で書かれています。基本的に、基盤となるストレージ エンジンにクエリを実行し、thrift を介してかなり大きな構造化データを返します。典型的なリクエストは、リクエストのサイズによって異なりますが、完了するまでに約 0.05 ~ 0.6 秒かかります。
c++ コードで使用できる Thrift サーバーに関して、いくつかのオプションがあることに気付きました。具体的には、TNonblockingServer、TThreadedServer、および TThreadPoolServer です。TNonblockingServer は、はるかに多くの同時要求をサポートでき、バックグラウンドでスレッド プールを使用してタスクを処理できるため、進むべき道のようです。また、スレッドの構築/破棄のコストも回避できます。
倹約に関する Facebook の最新情報: http://www.facebook.com/note.php?note_id=16787213919
Facebook では、C++ 用の完全非同期クライアントとサーバーに取り組んでいます。このサーバーは、現在の TNonblockingServer と同様にイベント駆動型 I/O を使用しますが、アプリケーション コードへのインターフェイスはすべて非同期コールバックに基づいています。これにより、数千の同時要求 (それぞれが他の Thrift または Memcache サーバーへの呼び出しを行う必要がある) を処理できるサーバーを、わずか数スレッドで作成できます。
stackover に関する関連記事:倹約における多数の同時接続
そうは言っても、必ずしも実際に作業を高速化できるとは限りません (ハンドラーは引き続きスレッド プールで実行されます) が、より多くのクライアントが一度に接続できるようになります。
ここで見逃している他の要因はありますか?どれが自分のニーズに最も適しているかをどのように判断すればよいですか?
cross-platform - CORBA、MessagePack RPC、Thrift、またはその他のものを完全に使用する必要がありますか?
私は新しいハードウェアデバイス用のソフトウェアを作成しています。これは、あらゆる種類の新しいサードパーティアプリケーションが必要に応じてアクセスできるようにするためのものです。
ソフトウェアは、ハードウェアデバイスをサポートするサードパーティのゲームやアプリケーションがポーリングできるネイティブプロセス(C ++)になります。これらのサードパーティアプリは、サブスクライブベースでネイティブプロセスからイベントを受信できる必要があります。そのため、ネイティブプロセスとは別に、サードパーティの開発者が簡単に接続できるようにアプリに埋め込むために選択する可能性のあるすべてのプラットフォーム/言語(Java、C ++、Pythonなど)用の「コネクタ」ライブラリも提供します。それらによって書かれる必要のある余分なコードはほとんどないデバイスに。すべてのデスクトップ/ラップトップOSプラットフォームをターゲットにし、公開する機能についてかなり良いアイデアを持っていますが、理想的には行き詰まりすぎないようにします(つまり、クライアントとサーバーの両方からエレガントにスケーラブルにしたい)視点)。
今後の信頼性、パフォーマンス、保守性、クロスプラットフォーム/言語の柔軟性、開発のしやすさの順に求めています。
何を使うべきですか?
CORBA、MessagePack-RPC、Thrift、または他の何か完全に?
(ライセンスのためにICEを省略しました)