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

統合

SQLクエリとSparkプログラムをシームレスに混在させることができます。

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

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を使い始めるには