2015-11-12 5 views
37

Apache Spark SQLContextとHiveContextの違いは何ですか?Apache Spark SQLContextとHiveContextの違いは何ですか?

HiveContextはSQLContextのスーパーセットであるため、開発者は常にSQLContextより多くの機能を持つHiveContextを使用する必要があります。しかし、各コンテキストの現在のAPIはほとんど同じです。

  • SQLContext/HiveContextがより有用なシナリオは何ですか?
  • HiveContextは、Hiveで作業している場合にのみより便利ですか?
  • また、SQLContextはApache Sparkを使用してBig Dataアプリケーションを実装するために必要なものですか?

答えて

29

スパーク2.0+

スパーク2.0は、ネイティブウィンドウ関数(SPARK-8641)を提供し、それがコアfuncionalityを達成するためにハイブに大幅にあまり依存しないので、いくつかの構文解析では、追加の改善とより良いSQL 2003コンプライアンスを備えており、そのためHiveContextSparkSession、ハイブサポートあり)はやや重要ではないようです。

スパーク明らか< 2.0

あなたはハイブで作業したい場合は、HiveContextを使用する必要があります。それ以降、Spark 1.5の最大の違いは、window functionsのサポートとHive UDFへのアクセスです。

一般的に言えば、ウィンドウ関数はかなりクールな機能であり、RDDとDataFramesの間を行き来することなく、非常に複雑な問題を簡潔な方法で解決するのに使用できます。パフォーマンスは、特にPARTITION BY節なしではまだまだ最適ではありませんが、実際にはSpark固有のものはありません。

ハイブUDFに関しては、今は深刻な問題ではありませんが、Spark 1.5より前には、ハイブUDFを使用して多くのSQL関数が表現されており、HiveContextが必要です。

HiveContextは、より堅牢なSQLパーサーも提供します。たとえば、次を参照してください。py4j.protocol.Py4JJavaError when selecting nested column in dataframe using select statetment

最後に、HiveContextは、Thriftサーバーを起動するために必要です。

HiveContextの最大の問題は大きな依存関係があることです。

+0

sqlcontext使用ハイブの使用を持っている場合には、ハイブ-site.xmlのから設定を読み込むことができるよう、それは一定の余分なプロパティなどが含まれ、まだsqlcontextのスーパーセットでありますHiveContextの唯一の欠点は、それが大きな依存関係にあることです。それ以外に、SqlContextではなく常にHiveContextを使用するのが安全な方法でしょうか。私はSparkR 1.6環境を実行しています。 –

+0

https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-sql-SparkSession.htmlから "SparkSessionはSpark 2.0の1つのオブジェクトにSQLContextとHiveContextをマージしました。"さらに読むための –

3

Spark SQLをプログラミングするときは、 に応じて2つのエントリポイントがあり、ハイブサポートが必要かどうかが決まります。推奨エントリーポイントは、HiveContextから へのアクセスで、HiveQLおよびその他のHive依存機能へのアクセスを提供します。より基本的なもの SQLContextは、 ハイブに依存しないSpark SQLサポートのサブセットを提供します。

- Hiveの依存関係をすべて に含めて競合する可能性のあるユーザーのために分離されています。

- SQLContextにはないHiveContextの追加機能には、より完全なHiveQLパーサー、ハイブUDFへのアクセス、およびHiveテーブルからのデータ読み取り機能を使用してクエリを書き込む機能が含まれます。

- HiveContextを使用する場合、既存のHiveセットアップは必要ありません。

+0

はhttps://spark.apache.org/docs/1.6.1/sql-programming-guide.html – BigDataScholar

+0

を参照してください。sqlコンテキストでもハイブセットアップは必要ありません – anubhav

3

HiveContextは、それはそうです、それはあなたがそうでなければ、単にあなたのコメントから

関連する問題