+
K
注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
トランスフォームが以前の出力を参照して、更新をインクリメンタルに計算する必要がある場合があります。これの例として、distinct() ↗ メソッドがあります。 トランスフォーム内で重複行を削除するには(現在の出力が正しいと仮定して)、入力内の新しい行を重複排除し、それらの行が既に出力に存在していないことを確認する必要があります。 ここでは、出力データセットの previous 読取りモードを使用します。これにより、最後のビルド時に出力された DataFrame ↗ が返されます。previous 出力が存在しない可能性があるため、空の DataFrame を正しく構築するために、dataframe('previous') 呼び出しにスキーマを提供する必要があります。
distinct()
previous
DataFrame
dataframe('previous')
このコードを実行すると、出力データセットのスキーマはデータから自動的に推測されます。これには、列の名前、その型、その "nullability"(StructField ↗ を参照)、および列の順序の自動検出が含まれます。ビルドの信頼性を確保するためには、Spark の推測に依存するのではなく、データフレームの予想スキーマをハードコーディングするのがベストプラクティスです。
StructField
全体の出力を常に置換する変換もあります。それでも、これらの変換はしばしばインクリメンタル計算から利益を得ることができます。その一例として、集計統計があります。たとえば、行ごとに各異なる値が何回発生するかを数えるなどです。