問題タブ [beam-sql]
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.
java - Apache Beam で「バインドされていない PCollection への参加は現在、トリガーを使用する非グローバル ウィンドウでのみサポートされています」を修正する方法
Apache Beam Java SDK を使用して 2 つの無制限のソースを結合しようとしています。参加中に以下のエラー メッセージが表示されます。
スレッド「メイン」での例外 java.lang.UnsupportedOperationException: 無制限の PCollection への結合は、現在、遅延が許可されていないデフォルトのトリガーなど、ウィンドウごとに 1 回出力を生成することが知られているトリガーを持つ非グローバル ウィンドウに対してのみサポートされています。このような場合、Beam はすべての入力要素をウィンドウごとに 1 回結合することを保証できます。WindowingStrategy{windowFn=org.apache.beam.sdk.transforms.windowing.SlidingWindows@1b87117、allowedLateness=PT0S、trigger=Repeatedly.forever(AfterProcessingTime.pastFirstElementInPane().plusDelayOf(1 分))、accumulationMode=DISCARDING_FIRED_PANES、timestampCombiner=EARLIEST } は、org.apache.beam.sdk.extensions.sql.impl.rel.BeamJoinRel の org.apache.beam.sdk.extensions.sql.impl.rel.BeamJoinRel.verifySupportedTrigger(BeamJoinRel.java:341) ではサポートされていません。
固定ウィンドウとスライディング ウィンドウの両方をトリガー (pastEndOfWindow & pastFirstElementInPane) と一緒に使用して、遅延をゼロにしてみました。Accumalate と Discard の両方の起動済みペインを試しました。毎回同じエラー メッセージが表示されます。
以下は、固定ウィンドウとスライド ウィンドウの両方を使用して試した 2 つのスニペットです。
私は単純に、スライディング ウィンドウを使用して SQL 変換を実装したかったのです。遅延をトリガーし、遅延を許可します。それを実装するために私を親切に案内してください。
ありがとう、ゴーサム
java - スライディング ウィンドウで重複を削除する方法 - Apache Beam
複数の無制限のソースと副入力を備えたデータ パイプラインを実装し、スライディング ウィンドウ (30 秒と 10 秒ごと) でデータを結合し、変換された出力を Kafka トピックに出力しました。私が抱えている問題は、ウィンドウの最初の 10 秒間に受信したデータが 3 回 (つまり) 新しいウィンドウが開始されるたびに、最初のウィンドウが完了するまでトリガーされることです。変換されたデータを一度だけ出力する方法、または重複を避ける方法は?
私は破棄されたペインを使用しましたが、違いはありません。ウィンドウを閉じる動作を FIRE_ALWAYS/FIRE_IF_NON_EMPTY に設定しようとすると、次のエラーがスローされます。
スレッド "main" org.apache.beam.sdk.Pipeline$PipelineExecutionException での例外: java.lang.IllegalArgumentException: 空の PCollection がシングルトン ビューとしてアクセスされました。org.apache.beam.runners.direct.DirectRunner$DirectPipelineResult.waitUntilFinish(DirectRunner.java:332) で org.apache.beam.runners.direct.DirectRunner$DirectPipelineResult.waitUntilFinish(DirectRunner. java:302) org.apache.beam.runners.direct.DirectRunner.run(DirectRunner.java:197) で org.apache.beam.runners.direct.DirectRunner.run(DirectRunner.java:64) で org.apache .beam.sdk.Pipeline.run(Pipeline.java:313) at org.apache.beam.sdk.Pipeline.run(Pipeline.java:299) at y.yyy.main(yyy.java:86) 原因: java.lang.IllegalArgumentException: 空の PCollection がシングルトン ビューとしてアクセスされました。
ウィンドウを一度だけトリガーするように親切にガイドしてください(つまり、すでに処理されたレコードを送信したくない)
更新: Side Input の上記のエラーが頻繁に発生します。Windows が原因ではなく、Apache Beam の問題のようです ( https://issues.apache.org/jira/browse/BEAM-6086 )
行が既に処理されているかどうかを識別するために State を使用しようとしましたが、状態が保持されていないか、設定されていません。(つまり) 状態の読み取り中に常に null を取得します。
apache-kafka - apache ビームの副入力の代替手段は何ですか?
Apache Beam を使用して、複数の kafka ストリームとルックアップに参加しようとしています。私はルックアップテーブルを処理するために副入力を使用しており、すべてがダイレクトランナーでうまくいきました。しかし、スパークモードまたはフリンクモードで実行しようとすると、副入力がサポートされていないことがわかりました。これらは Jira バグのリンクです。
http://mail-archives.apache.org/mod_mbox/beam-user/201605.mbox/%3C573EFC2F.6000708@nanthrax.net%3E https://issues.apache.org/jira/browse/FLINK-6131
これに対して副入力または回避策を使用する方法はありますか?
これにステートフル処理を使用できますか? キーごとのウィンドウごとに状態が利用可能であることは知っていますが、別の方法でそれを使用するための微調整はまだありますか?
memcached のようなキャッシング データベースを使用して、すべてのレコードの処理中にデータを取得できますか?
どんな提案でも大歓迎です。
ありがとう、