3. [Repositories] プロジェクト出力の作成4 - 簡単なコードレビュー

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

4 - 簡単なコードレビュー

flight_alerts_clean.py のコードは以下のことを行っています:

  1. 2つの前処理済みマッピングデータセットを取り込み、一時的に列名を変更します。
  2. 前処理済みのフライトアラートデータセットに2つのマッピングテーブルを結合し、ステータスと優先度コードを数値からテキスト文字列にマッピングします。
  3. 出力データセットの列を選択します。
  4. 2つの空の文字列列(assigneecomment)を追加し、運用上の下流ワークフローで使用します(例:フライトアラートをオペレーターにアクションとコメントのために割り当てることができます)。

PySpark の学習は、このトラックの範囲を超えています。コードベースのデータ変換を学習するためのオンラインリソースがたくさんあります。しかし、flight_alerts_clean.py のコードを簡単に見直して、基本的なベストプラクティスを示し、Foundryドキュメントで利用可能なPySparkリソースへのスプリングボードとしてみましょう。以下のテキストは、コードの運用上興味深い機能の一部(すべてではありません)を抜粋しています。

このタスクでドキュメントへのリンクが提供されている場合は、それらを選択して指定されたセクションを読んでください。

DataFrame

DataFrame は、この段階では簡単にしか説明できない Spark の概念です。簡単に言えば、DataFrame は名前付きの列の下にある行のコレクションです。例えば、コードの14行目では、priority_mapping_preprocessed のエイリアス化された列から構成される priority_mapping という DataFrame を作成しています。この DataFrame を定義した後、変換の中で名前を指定して呼び出すことができます。

F.col() & .withColumn()

インポート文で Functions モジュールが pyspark.sql からインポートされていることを思い出してください。コードのいくつかの箇所で、DataFrame の特定の列を参照できるように F.col を使用しています。列参照については、このドキュメントページで詳しく読んでください。その記事では、任意の列を DataFrame に追加するための withColumn の使用もカバーされています。

.select()

PySpark での select は、SQL での select とほぼ同じように機能します。つまり、ある DataFrame から特定の列を別の DataFrame に含める列を選択します。DataFrame_A が10個の列を持っていて、そのうち3つだけが必要な場合、.select() を使って DataFrame_B を作成できます。 DataFrame_B = DataFrame_A.select('col_1', 'col_2', 'col_3')

このドキュメントエントリ で述べられているように、.select() を使ってデータセットのスキーマを指定することは、可能な限り使用すべきベストプラクティスです。

.join()

PySpark の join は、SQL の join がテーブルを結合するのと同様に、DataFrame を結合します。PySpark の join に関するドキュメントを見直してください。次に、このセクションを読んで、アンチパターンや効率的な join 操作を保つための推奨ベストプラクティスをご確認ください。