2016-04-28 13 views
0

キャッサンドラテーブルからデータが読み込まれるスパークジョブを実行しています。そのデータから、私はいくつかの挿入文と削除文を作成します。 を実行してください。 sparkクラスタでsession.execute()がキャッサンドラに反映されない

boolean deleteStatus= connector.openSession().execute(delete).wasApplied(); 
boolean insertStatus = connector.openSession().execute(insert).wasApplied(); 
System.out.println(delete+":"+deleteStatus); 
System.out.println(insert+":"+insertStatus); 

(forEachの使用)私はローカルで実行すると、私はテーブル内のそれぞれの結果を参照してください。

ただし、クラスタで実行すると、結果が表示されることもありますが、変更が行われないこともあります。 sparkのweb-uiからstdoutを見て、両方のクエリに対してtrueと一緒にクエリが出力されました。 (データが正しくロードされた。しかし、時には、唯一の挿入が反映され、時には唯一の両方時々、削除、および時間なしの最も。。)

仕様:同じマシン上で

  1. スパーク奴隷を(各ノードには2つのスレーブインスタンスがあります)
  2. スパークマスターを別のマシンにインストールします。
  3. すべてのノードで修復が完了しました。
  4. カサンドラが再開

答えて

0

ブールdeleteStatus = connector.openSession()(削除)を実行.wasApplied()。

boolean insertStatus = connector.openSession()。execute(insert).wasApplied();

これは既知のアンチパターンでは、あなたは非常に高価である各クエリのための新しいSessionオブジェクトを作成します。

セッションを一度作成して、すべてのクエリに再利用してください。

は、クエリが実行され、カサンドラに送信されているかを確認ハックとスロークエリロガー機能を使用するには:http://datastax.github.io/java-driver/manual/logging/#logging-query-latencies

すべてのクエリが考慮されるようにアイデアが途方もなく低い値にしきい値を設定することです遅くなり、ログに表示されます。

あなたはそれが唯一のテストの目的のために行われているだけのコース

+0

のテストのために、このハックを使用する必要があります。 実際には、セッションはIterator でパーティションごとに(forEachPartition)、次に(forEachRemaining)開かれます。 –

関連する問題