Spark 2.4の使用からSpark 3.0.2の使用へのデータ・フロー・アプリケーションの移行

Spark 2.4.4ではなくSpark 3.0.2を使用するようデータ・フローを移行する方法について学習します。

データ・フローでは、Spark 2.4.4とSpark 3.0.2の両方がサポートされるようになりました。この章では、既存のデータ・フロー・アプリケーションをSpark 2.4.4からSpark 3.0.2に移行する場合に実行する必要がある内容について説明します。

Spark 3.0.2へのデータ・フローの移行

データ・フローをSpark 2.4.4からSpark 3.0.2に移行するステップおよび注意が必要な問題。

  1. Spark移行ガイドのステップを実行します。
  2. Spark 3.0.2にはScala 2.12が必要です。以前のバージョンのScalaでコンパイルされたScalaアプリケーションとその依存関係を適宜更新する必要があります。
  3. Spark 2.4.4のプロパティを許可リストに登録している場合は、それをSpark 3.0.2の許可リストにする別のリクエストを作成する必要があります。
  4. POM.xmlを更新して、Sparkライブラリの依存関係を明示的にコールします。
  5. 「アプリケーションの編集」「JavaまたはScalaデータ・フロー・アプリケーションの作成」「PySparkデータ・フロー・アプリケーションの作成」または「SQLデータ・フロー・アプリケーションの作成」で、「Sparkバージョン」Spark 3.0.2 -> Scala 2.12を選択します。
    ノート

    すでに実行が存在するアプリケーションのSparkバージョンを変更してから、この前の実行を再度実行すると、当初実行されていたバージョンではなく、新しいバージョンのSparkが使用されます。

タイムスタンプまたは日付の文字列解析時のエラー

Spark 2.4.4からSpark 3.0.2に移行した日付またはタイムスタンプの文字列に関連するデータ・フローの解析エラーや書式設定エラーを解決する方法について学習します。

データ・フロー・アプリケーションをSpark 3.0.2に移行すると、アプリケーションの実行時に次のエラーが表示されます:
org.apache.spark.SparkUpgradeException: You may get a different result due to the upgrading of Spark 3.0: Fail to recognize 'MMMMM' pattern in the DateTimeFormatter.
修正するには、spark.sql.legacy.timeParserPolicyLEGACYに設定します。アプリケーションを再実行します。