第12章. レジリエンス分散データセット(RDDs)
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
前編ではSparkの構造化APIを取り上げた。ほとんど全てのシナリオにおいて、これらのAPIを重用すべきだ。とはいえ、高レベルの操作では、解決しようとしているビジネスやエンジニアリングの問題に対応できない場合もある。そのような場合は、Sparkの低レベルAPI、特にレジリエンス分散データセット(RDD)、SparkContext、アキュムレータやブロードキャスト変数のような分散共有変数を使用する必要があるかもしれない。このパートに続く章では、これらのAPIとその使い方を説明する。
警告
Sparkの初心者であれば、ここから始める必要はない。構造化APIから始めれば、より早く生産的になれるだろう!
低レベルAPIとは何か?
分散データ(RDD)を操作するためのものと、分散共有変数(ブロードキャスト変数とアキュムレータ)を分散して操作するためのものだ。
ローレベルAPIはいつ使うのか?
一般的に、下位レベルのAPIを使うべき状況は以下の3つである:
-
例えば、クラスタ全体の物理的なデータ配置を厳密に制御する必要がある場合などだ。
-
RDDを使って書かれたレガシーコードベースを保守する必要がある。
-
カスタムの共有変数操作を行う必要がある。共有変数については第14章で詳しく説明する。
しかし、すべてのSparkワークロードは、これらの基本的なプリミティブにコンパイルされるため、これらのツールを理解することは有用である。DataFrame変換を呼び出しているとき、それは実際にはRDD変換のセットに過ぎない。このように理解することで、より複雑なワークロードのデバッグを行う際に、作業が容易になる。
Sparkを最大限に活用したいと考えている上級開発者であっても、構造化APIに集中することをお勧めする。しかし、タスクを完了させるために、より低レベルのツールに「ドロップダウン」したい場合もあるだろう。レガシーコードを使用したり、カスタムパーティショナーを実装したり、データパイプラインの実行過程で変数の更新や追跡を行ったりするために、これらのAPIにドロップダウンする必要があるかもしれない。これらのツールは、よりきめ細かい制御を可能にしてくれる。
ローレベルAPIを使うには?
SparkContext は低レベルAPI機能のエントリ点である。SparkSessionこれはSparkクラスタ全体で計算を実行するために使用するツールである。SparkContextはSparkクラスタ全体で計算を実行するために使用するツールである。これについては第15章で詳しく説明するが、今は以下の呼び出しでSparkContextにアクセスできることを知っていればよい:
spark.sparkContext
RDDについて
RDD Spark 1.Xシリーズでは主要なAPIであり、2.Xでもまだ利用可能だが、それほど一般的には使われていない。しかし、本書の序盤で指摘したように、DataFramesであれデータセットであれ、実行するほぼすべてのSparkコードはRDDにコンパイルされる。この本の次のパートで説明するSpark UIも、ジョブの実行をRDDで説明している。従って、RDDとは何か、そしてRDDをどのように使うかについて、少なくとも基本的な理解をしておいた方が良いだろう。 ...
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