問題タブ [flink-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.

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

apache-flink - Flink ジョブを実行するために必要な合計ジョブ並列数またはスロット数を決定する方法はありますか (実行前に)

最初に実際にジョブを開始することなく、実行計画またはその他の方法でジョブを実行するために必要なタスクスロットの総数を決定する方法はありますか?

このドキュメントによると: https://ci.apache.org/projects/flink/flink-docs-stable/concepts/runtime.html

「Flink クラスターには、ジョブで使用される最高の並列処理と正確に同じ数のタスク スロットが必要です。プログラムに合計で含まれる (さまざまな並列処理を使用した) タスクの数を計算する必要はありません。」

StreamExecutionEnvironment から実行計画を取得し (セットアップ後、実際にはジョブを実行せずに)、実行計画 json のノードのリストから任意のノードの最大並列処理を取得すると、必要なタスク スロットの数を決定するのに十分でしょうか。ジョブを実行します。

これが当てはまらなくなる状況はありますか? または注意すべき点はありますか?

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

apache-flink - flink cep で集計タスクを完了する方法

1 日に A が発生し、15 分間に B が発生する回数を数える必要があります。ストリームは、おそらく A1 、A2、B1、B2、A3、B3、B4、B5、A4、A5、A6、A7、B6 です。私の場合、イベントの結果は A2,B1 A3,B3 A7,B6 です。 そして、マッチャーが発生したときにリアルタイムで結果を受け取る必要があります。 sql-cep は集計をサポートしていません。発生したイベントのみを計算します。 この場合、単一の SQL でこのタスクを実行する方法。

私はそれを行うのに2ステップ疲れました.flink sql cepを最初にマッチャーに使用し、次にkafkaにシンクします。ステップでは、プレカフカをソースし、オーバーウィンドウを使用して集計します。

最初のステップ: select pin as pin,'first-step' as result_id, cast(order_amount as varchar) as result_value,event_time as result_time from stra_dtpipeline MATCH_RECOGNIZE ( PARTITION BY pin
ORDER BY event_time MEASURES
t1.pin as pin, '1' as order_amount , LOCALTIMESTAMP as event_time 一致ごとに 1 行 一致後 次の行にスキップ PATTERN (t1 t2) WITHIN INTERVAL '30' SECOND
DEFINE
t1 as t1.act_type='100001' , t2 as t2.act_type='100002' ) 二段目: select pin,'job5' as result_id,cast(sum(1) over (PARTITION BY pin,cast(DATE_FORMAT(event_time, '%Y%m%d') as VARCHAR) order by event_time ROWS BETWEEN INTERVAL '1' DAY PRECEDING AND CURRENT ROW ) as result_value, CURRENT_TIMESTAMP as result_time from stra_dtpipeline_mid where result_id='first-step' and DAYOFMONTH(CURRENT_DATE) )=DAYOFMONTH(event_time)

単一の SQL でこのタスクを達成できると思います。