2016-08-04 2 views
1

私はsparkで新しく、HortonWorks Sandboxを使ってtpcdsベンチマークテーブルでいくつかのクエリを実行しようとしています。 http://www.tpc.org/tpcds/ サンドボックスでハイブをシェルまたはハイブビューで使用しても問題ありません。問題は、スパークを使いたい場合、どのようにデータベースに接続するのか分かりません。 クエリを実行するためにsparkでハイブデータベースを使用するにはどうすればよいですか? これまで知っていた唯一の解決策は、各テーブルを手動で再構築し、以下のスカラーコードを使用してデータをロードすることです。これは最適な解決策ではありません。 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() 

は、私はまた、ハイブ-site.xmlのに関するいくつかを読んで、私はそれを見つけるために、データベースに接続するには、それにどのような変更を加えることがどこか分かりません。

+0

ハイブサイト(およびその他の設定ファイル)でありますHadoopバイナリをインストールする場所 –

+0

サンドボックスを使用している場合は、ここで必要なものすべてを回答してください。最後のいくつかのコマンドは、既存のHiveテーブルhttp://hortonworks.com/hadoop-tutorial/using-hive-with-orc-from-apache-spark/からクエリを実行します。 –

答えて

2

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

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

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

その後、スパークであなたは(構文が間違っているかもしれないので、私はScalaのユーザーではないよ)そのような何かを行うことができます。

val hc = new org.apache.spark.sql.hive.HiveContext(sc) 
val result = hc.sql("SELECT col1, col2, col3 FROM dbname.tablename") 
result.show() 
関連する問題