BT

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

| 作者: Matt Kapilevich , 翻訳者 吉田 英人 投稿日 2014年4月24日. 推定読書時間: 1分未満 |

原文(投稿日: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をリリースできるでしょう。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT