Spark SQL は、構造化データを扱うための Apache Spark のモジュールです。

統合

SQL クエリと Spark プログラムをシームレスに混在させる。

Spark SQL を使用すると、Java、Scala、Python、R で、SQL または使い慣れた DataFrame API を使って、Spark プログラム内の構造化データをクエリできます。

results = spark.sql(
  "SELECT * FROM people")
names = results.map(lambda p: p.name)
SQL クエリの結果に関数を適用する。

統一されたデータアクセス

あらゆるデータソースに同じ方法で接続する。

DataFrames と SQL は、Hive、Avro、Parquet、ORC、JSON、JDBC を含むさまざまなデータソースにアクセスするための共通の方法を提供します。これらのソース間でデータを結合することもできます。

spark.read.json("s3n://...")
  .registerTempTable("json")
results = spark.sql(
  """SELECT *
     FROM people
     JOIN json ..."""
)
異なるデータソースをクエリして結合する。

Hive 統合

既存のウェアハウスで SQL または HiveQL クエリを実行する。

Spark SQL は HiveQL 構文、Hive SerDes、UDF をサポートしており、既存の Hive ウェアハウスにアクセスできます。

Spark SQL は、既存の Hive メタストア、SerDes、UDF を使用できます。

標準的な接続性

JDBC または ODBC 経由で接続する。

サーバーモードは、ビジネスインテリジェンスツール向けの業界標準の JDBC および ODBC 接続を提供します。

既存の BI ツールを使用してビッグデータをクエリする。

パフォーマンス & スケーラビリティ

Spark SQL には、コストベースのオプティマイザー、列指向ストレージ、コード生成機能が搭載されており、クエリを高速化します。同時に、Spark エンジンを使用して数千ノードや数時間かかるクエリにもスケーリングし、クエリ実行中の耐障害性も提供します。履歴データに別のエンジンを使用することを心配する必要はありません。

コミュニティ

Spark SQL は Apache Spark の一部として開発されています。そのため、各 Spark リリースでテストおよび更新されます。

システムに関する質問は、Spark メーリングリストにお尋ねください。

Spark SQL 開発者は貢献を歓迎します。参加をご希望の方は、Spark への貢献方法をお読みになり、パッチをお送りください!

はじめに

Spark SQL の開始方法