2016-03-23 14 views
1

Spark SQLは初めてですが、ハイブクエリ実行フレームワークを認識しています。私はsparkがSQLクエリ(技術的記述)をどのように実行するのかを理解したいと思いますか?私はハイブではHiveでSpark SQLクエリを実行

val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc) 
sqlContext.sql("select count(distinct(id)) from test.emp").collect 

コマンドの下に火場合

それは地図-削減の仕事に変換されますが、それはスパークに実行されますか?

ハイブメタストアがどのように表示されますか?

ありがとうございます。

答えて

0

質問に簡単に答えます:いいえ、HiveContextはMRジョブを開始しません。あなたのSQLクエリはまだスパークエンジンを使用します

私は火花のドキュメントから引用します:基本的なSQLContextに加えて

、あなたはまたによって提供される機能のスーパーセットを提供HiveContextを作成することができます基本SQLContext追加機能には、より完全なHiveQLパーサ、ハイブUDFへのアクセス、およびHiveテーブルからのデータ読み込み機能を使用してクエリを書き込む機能があります。 HiveContextを使用するには、既存のHiveセットアップを行う必要はなく、SQLContextで使用可能なすべてのデータソースを引き続き使用できます。 HiveContextは、Hiveのすべての依存関係をデフォルトのSparkビルドに含めることを避けるために、別途パッケージ化されています。これらの依存関係がアプリケーションにとって問題でない場合、HarkContextを使用することは、Sparkの1.3リリースで推奨されます。あなたの結果のデータフレーム/テーブルを永続化するためにも、クエリの解析と既存のハイブのテーブルへのアクセスを強化するので、HiveContextが火花で使用されているHiveContext

とパリティを備えています、とまで将来のリリースでは、SQLContextをもたらすことに焦点を当てます。実際には、Hiveは、MRやtezを使用する代わりにSparkを実行エンジンとして使用できます。

ハイブメタストアは、ハイブテーブルに関するメタデータです。また、HiveContextを使用すると、sparkはこのメタストアサービスを使用できます。文章を参照してください:http://spark.apache.org/docs/latest/sql-programming-guide.html

+0

SQL文の解析はHiveQlパーサーによって行われるのですか、それともSparkが解析しますか? – Shashi

+0

私はあなたの質問を理解しているかどうかはわかりませんが、私はこのように言います:すべての仕事はスパークによって行われます。 Sparkはホイールを再発明しないので、Hive解析機能を使用します。あなたの質問にお答えしたいと思います;) – user1314742

+0

Spark + Hiveの対話に使用できるアーキテクチャ図はありますか? – Shashi