2

私は Spark が初めてで、HortonWorks Sandbox を使用して tpcds ベンチマーク テーブルでいくつかのクエリを実行しようとしています。 http://www.tpc.org/tpcds/ シェルやサンドボックスの hive-view を介してハイブを使用する場合は問題ありません。問題は、スパークを使用したい場合にデータベースに接続する方法がわからないことです。クエリを実行するために、spark でハイブ データベースを使用するにはどうすればよいですか? 私が今まで知っている唯一の解決策は、各テーブルを手動で再構築し、次のスカラ コードを使用してデータをロードすることですが、これは最善の解決策ではありません。

scala> val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
scala> sqlContext.sql("CREATE TABLE IF NOT EXISTS employee(id INT, name STRING, age INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'")
scala> sqlContext.sql("LOAD DATA LOCAL INPATH 'employee.txt' INTO TABLE employee")
scala> val result = sqlContext.sql("FROM employe SELECT id, name, age")
scala> result.show()

hive-site.xml についてもいくつか読みましたが、どこにあるのか、データベースに接続するためにどのような変更を加える必要があるのか​​ わかりません。

4

1 に答える 1

3

Spark と HiveContext を使用する場合、特定のデータベースに接続する必要はありません。

「hive-site.xml」ファイルを Spark conf フォルダーにコピーするだけです (または、シンボリック リンクを作成することもできます)。

cp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf/

次に、Spark で次のようなことができます (私は scala ユーザーではないため、構文が間違っている可能性があります)。

val hc = new org.apache.spark.sql.hive.HiveContext(sc)
val result = hc.sql("SELECT col1, col2, col3 FROM dbname.tablename")
result.show()
于 2016-10-03T14:10:14.637 に答える