問題タブ [apache-storm]
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.
hadoop - JavaのStormBolt内でHadoopFSAPIを使用する方法
StormSpoutによって発行されたhdfsにデータを保存したいと思います。BoltクラスにhadoopFSAPIコードを追加しましたが、暴風雨でコンパイルエラーが発生します。
以下はストームボルトクラスです:
}
CLASSPATHにもhadoopjarを追加しました。classpathの値は次のとおりです。
また、コピーされたhadoopライブラリ:Storm / libディレクトリのhadoop-cor-1.0.4.jar、commons-collection-3.2.1.jar、commons-cli-1.2.jar。
このプロジェクトをビルドしているとき、次のエラーがスローされます:
java - テスト目的でbacktype.storm.tuple.Tupleを作成しますか?
私はStormexecute(Tuple tuple)
を初めて使用し、サブクラス化されたでメソッドをテストするボルトテストを作成する方法を模索していBaseRichBolt
ます。
問題は、Tuple
不変であるように見え、新しいタプルを作成するためのメソッドやビルダーが表示されないことです。自分で作成するにはどうすればよいですTuple
か、またはテスト入力を使用してボルトをテストするにはどうすればよいですか?
私は実際にはJavaではなくScalaを使用していますが、答えは簡単に翻訳できるはずです。
java - ストーム トポロジ内での新しい接続作成時の Rabbitmq のブロック
私は嵐に慣れていません。あるキューからタプルを受け取るスパウト内でrabbitmqを使用しています。そのキューにタプルを挿入する別のマシンを実行しているクライアントがあります。正常に動作する単純なrabbitmqサンプルプログラムを実行しましたが、使用しているときストームスパウト内でブロックされます
私のrabbitmqサーバーも実行されており、サンプルコードを実行すると同じマシンで正常に実行されます。ステートメントを印刷する ステートメントに印刷する
以下は私の完全なスパウトクラスです。
}
java - Cassandra でのカウンター クエリ中の文字列検証エラー
コードに次のカウンター クエリがあります。
私の単体テストでは、コードは完全に機能します。しかし、適切なアプリケーションを実行すると(私はそのためにストームを使用しています)、次のエラーが発生します。
また、Cassandra へのアクセスには Hector を使用しています。
real-time - 複数のストーム トポロジ間の通信
複数の Storm トポロジを運用環境に展開しようとしています。ドキュメントを確認しましたが、トポロジがネイティブ メソッドを介して通信できるかどうかについての参照が見つかりませんでした。これを実装する方法について何か提案はありますか?
要するに、タプルがトポロジを越えて送信される可能性があるかどうかを確認することに興味があります。
ご協力いただきありがとうございます!
apache-storm - Storm では、1 つのバッチにいくつのタプルが妥当ですか?
私は嵐の初心者です。チュートリアルの例でトライデントを試してみると、通常、1 つのバッチに含まれるタプルの数はごくわずかです (通常は 10 以下)。Trident は高いスループットを提供することを目指しており、1 秒あたり数百万のメッセージを処理します。では、実際には 1 つのバッチでいくつのタプルが合理的かを尋ねたいと思いますか?
cluster-computing - Storm Trident はバッチ内でのみ JOIN を実行できますか?
JOIN セマンティクスを実装したいので、Trident トポロジで join メソッドを試します。join がバッチ間で行われていることがわかりました。数百万のタプルを持つ 2 つのストリーム間の結合の場合、1 つのバッチ内で行う必要がありますか?
genderSpout では、各バッチに 3 つのタプルがあるため、Spout は ageSpout の 2 つのバッチを発行し、各バッチには 5 つのタプルがあるため、Spout は 1 つのバッチのみを発行します。
そして、JoinType で LEFT OUTER JOIN を実行します。
テストコードの出力は次のとおりです。
出力から、最初の 4 つの結果は、genderSpout からの最初のバッチと ageSpout からの最初のバッチを結合していることがわかります。そして最後の 2 つの結果は、genderSpout からの 2 番目のバッチと ageSpout からの空のバッチとの間の結合です。したがって、genderSpout LEFT JOIN ageSpout の私の望ましい結果は次のとおりであるため、結果は JOIN セマンティクスに対して正しくありません。
私の質問は、JOIN の両側 (Spout) に何百万ものタプルがある場合、正しい結果を得るためにそれらを 1 つのバッチに入れる必要がありますか?
または、私のやり方が間違っています。OUTER JOIN セマンティクスの正しい結果を得るにはどうすればよいか教えてください。
テストコードは次のとおりです。
clojure - Storm > Java コールバックをスパウトに統合する方法
Storm (こちらを参照) をプロジェクトに統合しようとしています。トポロジ、スパウト、ボルトの概念を理解しました。しかし今、私はいくつかのことの実際の実装を理解しようとしています。
A) Java と Clojure を使用した多言語環境があります。私の Java コードは、ストリーミング データを起動するメソッドを持つコールバック クラスです。これらのメソッドにプッシュされたイベント データは、スパウトとして使用したいものです。
したがって、最初の質問は、これらのメソッドに入ってくるデータをスパウトに接続する方法です。i) backtype.storm.topology.IRichSpoutを渡し、次にii) backtype.storm.spout.SpoutOutputCollector (こちらを参照) をそのスパウトのopen関数 (こちらを参照) に渡そうとしています。しかし、実際にマップやリストを渡す方法がわかりません。
B)私のプロジェクトの残りの部分はすべて Clojure です。これらの方法を介して大量のデータが送信されます。各イベントには 1 ~ 100 の ID があります。Clojure では、スパウトからのデータを別の実行スレッドに分割したいと考えています。それらがボルトになると思います。
スパウトからイベント データを取得し、着信イベントの ID に基づいてスレッドを分割するように Clojure ボルトを設定するにはどうすればよいですか?
前もって感謝します ティム
[編集1]
私は実際にこの問題を乗り越えました。結局、1)独自の IRichSpout を実装しました。次に、2)そのスパウトの内部タプルを Java コールバック クラスの着信ストリーム データに接続しました。これが慣用句かどうかはわかりません。しかし、エラーなしでコンパイルおよび実行されます。ただし、3) printstuffボルトを介して着信するストリーム データが (確実に) 表示されません。
イベント データが確実に伝播されるようにするために、スパウトまたはボルトの実装またはトポロジ定義で何か特別な作業を行う必要がありますか? ありがとう。
[編集2]
SO メンバーの Ankur のアドバイスを受けて、トポロジーを再調整しています。Java コールバックを作成したら、そのタプルを以下の IBSpout に渡します(.setTuple ibspout (.getTuple java-callback))
。NotSerializable エラーが発生するため、Java コールバック オブジェクト全体を渡しません。すべてがエラーなしでコンパイルおよび実行されます。しかし、繰り返しますが、プリントスタッフのボルトにデータが来ていません。うーん。
scala - Scala 2.10 ストーム プロジェクト ClassNotFoundException
これはある種のバージョン管理の問題である可能性があると思われますが、それでもその根底には到達できません。https://github.com/velvia/ScalaStormに基づく Scala DSL を使用して、Scala 2.10 で play2.1/storm プロジェクトをセットアップしようとしています。DSL ファイルをプロジェクトにコピーして編集しました。同じプロジェクトから WordCountTopology の例を実装しようとすると、私の問題が発生します。例の直接コピー/貼り付けは正常にコンパイルされ、Eclipse は何も文句を言いませんが、メイン関数を実行すると、classNotFoundExceptions が発生します。
クラスは明確に定義されており、それらを使用する行 (builder.setSpout と builder.setBolt の行) をコメントアウトし、ClassNotFound クラス (RichStormSpout、WordCount、SplitSentence) の新しいオブジェクトを作成するだけですが、何もしません。コンパイルして問題なく動作します。
どんな助けでも大歓迎です
編集:ここにスタックトレースがあります: