私のシナリオでは、CSV ファイルを継続的に HDFS にアップロードしています。
新しいファイルがアップロードされるとすぐに、新しいファイルを Spark SQL で処理したいと思います (たとえば、ファイル内のフィールドの最大値を計算し、ファイルを に変換しますparquet
)。つまり、各入力ファイルと変換/処理された出力ファイルの間に 1 対 1 のマッピングがあります。
HDFS ディレクトリをリッスンし、Spark で「ストリーミングされたファイル」を処理するために、Spark ストリーミングを評価していました。
ただし、ファイル全体を処理するには、「ファイル ストリーム」がいつ完了するかを知る必要があります。ファイル間のエンド ツー エンドの 1 対 1 のマッピングを維持するために、変換をファイル全体に適用したいと考えています。
マイクロバッチではなく、ファイル全体を変換するにはどうすればよいですか?
私の知る限り、Spark Streaming は変換をバッチ (DStreams
にマップRDDs
) にのみ適用でき、一度にファイル全体に適用することはできません (その有限ストリームが完了したとき)。
あれは正しいですか?もしそうなら、私のシナリオではどのような代替案を検討する必要がありますか?