BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース DataBricks,Sparkで構造化データを操作するSpark SQLを発表

DataBricks,Sparkで構造化データを操作するSpark SQLを発表

原文(投稿日:2014/04/19)へのリンク

Apache Sparkを開発するDataBricksは,SparkエコシステムにSpark SQLという新たな製品を投入すると発表したSpark SQLはSparkから独立した製品で,Hiveを内部的に使用していない。

Hadoopの登場により,ビッグデータを処理するためのデータウェアハウス構築は以前より簡単になった。その一方で,HadoopのクエリにはMapReduceジョブの記述が必要であるため,特殊な開発スキルと少なからぬ努力を要することに変わりはない。Hadoop上に一般的なSQLクエリエンジンを実現することで,この問題を解決するのがHiveである。HiveがSQLをMapReduceジョブに変換してくれるのだ。Sparkではこれと同じような,SharkというSQLクエリエンジンを提供している。Sharkもクエリ実行計画についてはHiveに依存しているが,物理的な実行フェーズではHadoopに代えてSparkを使用する。Spark SQLでDataBrickはこのHiveの利用を止めて,新しいSQLエンジンに賭けようとしているのだ。

InfoQでは同社のソフトウェア技術者であるReynold Xin,Michael Armbrust両氏とコンタクトを取り,Spark SQLについて詳しく聞いた。

InfoQ: Spark SQLの開発を始めたのはいつ頃ですか?

Raynold & Michael: MichaelがDatabricksに参加した昨年11月にすべてが始まりました。開発作業の陣頭指揮を取っているのは彼なのです。

InfoQ: HiveやSharkから離れて,ネイティブなSpark SQL実装を選択したのですが,そう決めた一番の理由は何だったのでしょう?

Reynold & Michael: 私たちは,Hiveに依存しているSharkの現在の実行エンジンから離れることにしました。新しい実行エンジンとしてSpark SQLを使用する予定です。その大きな理由は,コードベースのメンテナンス性の向上にあります。迅速な開発を可能にすることで,パフォーマンスの最適化と優れた機能セットという両面から,ユーザがメリットを得られるようにしたいのです。

開発チームは5,6個のクエリエンジンを同時に書きました。そのなかのひとつが,世界でもっとも重要なデータベースを支援することになります。これが"最高の結果を得る"という,私たちのやり方なのです。

Hiveの現在のクエリオプティマイザは,MapReduceの制限に対処するため,非常に複雑なものになっています。その多くは,Sparkの環境で使用する場合には必要ありません。クエリオプティマイザと実行フレームワークを独自に設計することで,かなりシンプルなものにすることができました。クエリオプティマイザと分散クエリエンジンを構築する上で,Spark SQLは非常に明確な抽象化を提供してくれます。そのおかげで,エンジンのパフォーマンスを短期間に向上することが可能になったのです。

InfoQ: Catalystについて,もう少し詳しく説明してください。これがSpark SQLのSQL実行エンジンなのでしょうか?

Reynold & Michael: Catalystは,本当は実装非依存の最適化フレームワークです。実行エンジンではありません。Spark SQLの一部として開発されましたが,将来的には他のクエリエンジンでも使用したいと思っています。Spark SQLは実行エンジンとして,Catalystを全面的に活用しているのです。

クエリオプティマイザの開発というのは,なかなかやっかいな仕事なのですが,Catalystでは長年にわたる高度な研究成果を取り入れて,シンプルでありながらパワフルなクエリオプティマイザを構築することで,この面倒な仕事をずっと簡単にできるようにしました。他のシステムならば数千行にも及ぶ最適化ルールが,Catalystならば数十行で済んでしまいます。シンプルでコンポーネント化されたルールを使うことで,システムの正確性の検証もずっと簡単になります。この簡潔さがシステムのメンテナンスや,それよりも重要なシステムの改良を容易にしてくれるのです。

InfoQ: Spark SQLを使えば,RDDをネイティブに記述することができるのですが,これがインプットRDDを作成する主要な手法のひとつになると予想していますか?

Reynold & Michael: SparkSQLを使えば,開発者はこれまでにない方法で,自分たちのデータを操作できるようになります。一番にあげられるのは,既存のRDDにスキーマを適用可能になることです。Sparkの変換機能のレパートリは今でも十分強力ですが,スキーマ情報を加えることによって,さらにRDD上でSQLの実行が可能になるのです。

ただしこの機能は,ストーリの一部分に過ぎません。Spark SQLを使えば,既存のデータ(現時点ではHiveとParquet,将来的にはArvo, HBase, Cassandraなども)の読み書きも可能になります。

InfoQ: あなた方のブログ記事には,Spark SQLはSpark 1.0でアルファ版として提供されるとあります。1.0のリリースはいつ頃になるのでしょう?

Reynold & Michael: Spark 1.0は,コードフリーズが間近なところまで進んでいます。QA期間がスムーズに進めば,今月末にはSpark 1.0をリリースできるでしょう。

この記事に星をつける

おすすめ度
スタイル

BT