第10章. スパークSQL
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
Spark SQLは間違いなくSparkの最も重要で強力な機能の1つである。この章では、Spark SQL のコア概念について紹介する。この章では、ANSI-SQLの仕様を書き直したり、SQL式をひとつひとつ列挙したりはしない。本書の他の部分を読めば、コードサンプルとの相互参照を容易にするために、DataFrame のコードを含むところには必ず SQL のコードを含めるようにしていることに気づくだろう。他の例は、付録やリファレンスのセクションにある。
一言で言えば、Spark SQLを使えば、データベースに整理されたビューやテーブルに対してSQLクエリを実行できる。また、システム関数を使ったり、ユーザ関数を定義したり、クエリプランを分析してワークロードを最適化することもできる。これはDataFrameとDataset APIに直接統合されており、前の章で見たように、データ操作の一部をSQLで表現し、その他をDataFrameで表現することを選択でき、それらは同じ基礎コードにコンパイルされる。
SQLとは何か?
SQL(Structured Query Language)とは、 、データに対する関係演算子を表現するためのドメイン固有の言語である。SQLはすべてのリレーショナル・データベースで使用されており、多くの "NoSQL "データベースは、データベースでの作業を容易にするためにSQL方言を作成している。SQLはどこにでもあり、技術専門家はSQLの死を予言したが、SQLは非常にレジリエンスに優れたデータツールであり、多くの企業がSQLに依存している。SparkはANSI SQL:2003のサブセットを実装している。このSQL標準は大半のSQLデータベースで利用可能なもので、このサポートはSparkが人気のベンチマークTPC-DSの実行に成功していることを意味する。
ビッグデータとSQL:Apache Hive
Sparkが台頭する以前、Hiveは事実上のビッグデータSQLアクセスレイヤーだった。もともとはFacebookで開発されたHiveは、ビッグデータに対してSQL演算子を実行するためのツールとして、業界を問わず絶大な人気を誇るようになった。アナリストがSQLクエリを実行できるようになったため、多くの意味でHadoopをさまざまな業界に普及させる一助となった。Sparkはレジリエンス分散データセット(RDD)を使った一般化処理エンジンとして始まったが、今では多くのユーザがSpark SQLを使っている。
ビッグデータとSQL:Spark SQL
Spark 2.0のリリースで、作者はHiveのサポートのスーパーセットを作成し、ANSI-SQLとHiveQLクエリの両方をサポートするネイティブSQLパーサーを書いた。これは、DataFramesとのユニークな相互運用性とともに、あらゆる種類の企業にとって強力なツールとなっている。例えば、2016年後半、フェイスブックはSparkワークロードの実行を開始し、それによって大きな利点を見ていると発表した。ブログ記事の著者の言葉を借りれば、こうだ:
私たちは、何百ものHiveジョブを単一のSparkジョブに分解するパイプラインを置き換えるためにSparkに挑戦した。一連のパフォーマンスと信頼性の改善を通じて、Sparkをスケールさせ、エンティティのランキングデータ処理のユースケースの1つを本番で処理することができた。Sparkベースのパイプラインは、古いHiveベースのパイプラインと比較して大幅なパフォーマンス改善(CPU ...
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