第4章 構造化APIの概要 構造化APIの概要
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
この のパートでは、Sparkの構造化APIを深く掘り下げていく。構造化APIは、非構造化ログファイルから半構造化CSVファイル、高度に構造化されたParquetファイルまで、あらゆる種類のデータを操作するためのツールである。これらのAPIは、分散コレクションAPIの3つのコアタイプを指す:
-
データセット
-
データフレーム
-
SQLテーブルとビュー
本書では両者を区別しているが、構造化APIの大部分はバッチ計算とストリーミング計算の両方に適用される。つまり、構造化APIを使えば、バッチからストリーミング(あるいはその逆)への移行は、ほとんど労力をかけずに簡単にできるということだ。ストリーミングについてはパートVで詳しく説明する。
構造化APIは、データフローの大部分を記述するために使用する基本的な抽象化である。本書ではこれまで、チュートリアル的なアプローチで、Sparkが提供するものの多くを蛇行しながら見てきた。このパートでは、より深く掘り下げていく。この章では、理解しておくべき基本的な概念を紹介する。型付きAPIと型無しAPI(とその違い)、コアとなる用語、そして最後に、Sparkが実際にどのように構造化APIのデータフローを受け取り、クラスタ上で実行するのか。そして、特定のタイプのデータやデータソースを扱うための、より具体的なタスクベースの情報を提供する。
注
先に進む前に、第1部で扱った基本概念と定義を復習しておこう。Sparkは、ユーザが変換を指定する分散プログラミングモデルである。複数の変換は、命令の有向非循環グラフを構築する。アクションは、命令のグラフを単一のジョブとして、クラスタ全体で実行するステージとタスクに分解して実行するプロセスを開始する。変換とアクションで操作する論理構造は、DataFrameとデータセットである。新しいDataFrameやデータセットを作成するには、トランスフォームを呼び出す。計算を開始したり、ネイティブ言語の型に変換したりするには、アクションを呼び出す。
データフレームとデータセット
パート1では、 DataFramesについて説明した。Sparkには構造化コレクションの概念が2つある:DataFramesとデータセットだ。微妙な)違いについては後ほど触れるが、まずはこの2つが何を表しているのかを定義しよう。
DataFramesとデータセットは、行と列が明確に定義された(分散した)テーブルのようなコレクションである。各カラムは、他のすべてのカラムと同じ数の行を持たなければならず(ただし、null を使って値がないことを指定できる)、各カラムは、コレクション内のすべての行で一貫していなければならない型情報を持つ。Sparkにとって、DataFramesとデータセットは、ある場所に存在するデータにどのような演算子を適用して出力を生成するかを指定する、不変性で遅延評価可能な計画を表す。DataFrameに対してアクションを実行すると、Sparkに実際の変換を実行して結果を返すように指示する。これは、ユーザが望む結果を計算するために、行や列をどのように操作するかの計画を表している。
注
テーブルとビューは基本的にデータフレームと同じものだ。DataFrameコードの代わりにSQLを実行するだけだ。Spark SQLに特化した ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access