3

Spark クラスターのセットアップがあり、データセットでネイティブ scala と spark sql の両方を試しましたが、セットアップはほとんどの場合うまくいくようです。次の質問があります

クラスターへの ODBC/外部接続から、何を期待すればよいですか? - 管理者/開発者はデータを形成し、公開されるいくつかの RDD を永続化/キャッシュしますか? (ハイブ テーブルの行を考えて) - spark/spark sql の「ハイブ メタストア」に接続するのと同じことは何ですか?

ハイブの線に沿って考えるのは間違っていますか?

私のもう1つの質問は、ハイブクエリを発行すると(そしてテーブルなどを作成すると言うと)、hadoop/ハイブと同じハイブメタストアを使用します-sqlcontextを使用してSQLクエリを発行すると、テーブルはどこに作成されますか? - テーブルを永続化する場合、RDD を永続化するのと同じ概念ですか?

あなたの答えに感謝します

ニティア

4

1 に答える 1

5

(これは、spark 1.1 を念頭に置いて書かれています。新しい機能がすぐに追加される傾向があることに注意してください。以下で説明するいくつかの制限は、将来のある時点で完全になくなる可能性があります)。

Hive 構文で Spark SQL を使用し、Hive メタストアに接続すると、Hive を介して直接実行された場合と同じデータ空間で Spark SQL ハイブ コマンドが実行されます。

これを行うには、ここで説明されているように HiveContext をインスタンス化し、Hive メタストアの場所などを指定する hive-site.xml 構成ファイルを提供するだけです。

SELECT ステートメントの結果は SchemaRDD です。これは、関連付けられたスキーマを持つ Row オブジェクトの RDD です。キャッシュや永続化を含む任意の RDD を使用するのと同じように使用でき、効果は同じです (データがハイブから取得されるという事実はここでは影響しません)。

"CREATE TABLE ..." などのハイブ コマンドがデータを作成している場合、対応するテーブルは、通常のハイブとまったく同じ場所 (つまり、デフォルトでは /var/lib/hive/warehouse) に作成されます。

Spark を介して Hive SQL を実行すると、Spark のすべてのキャッシュの利点が得られます。通常、同じ Spark コンテキスト内の同じデータ セットに対して 2 番目の SQL クエリを実行すると、最初のクエリよりもはるかに高速になります。

Spark 1.1 以降、Thrift JDBC サーバーを起動できます。これは本質的に HiveServer2 と同等であり、JDBC 接続を介して SparkQL コマンドを実行できます。

すべての Hive 機能が利用できるわけではないことに注意してください (まだ?) 。詳細については、こちらを参照してください。

最後に、Hive 構文とメタストアを破棄して、CSV ファイルと Parquet ファイルで直接 SQL クエリを実行することもできます。現時点では、このように利用できる SQL 機能のセットは、Hive 構文を使用する場合よりも少ないですが、将来的にはこれが推奨されるアプローチになると推測しています。

于 2014-10-05T14:28:43.927 に答える