2016-08-04 5 views
1

Ich bin neu in spark und versuche, einige Abfragen auf Tpcds-Benchmark-Tabellen mit HortonWorks Sandbox auszuführen. http://www.tpc.org/tpcds/ Es gibt kein Problem bei der Verwendung von Hive durch Shell oder Hive-View auf Sandbox. Das Problem ist, dass ich nicht weiß, wie man sich mit der Datenbank verbindet, wenn ich den Funke benutzen möchte. Wie kann ich eine Hive-Datenbank in Spark zum Ausführen der Abfragen verwenden? Die einzige Lösung, die ich bis jetzt kenne, ist, jede Tabelle manuell neu zu erstellen und Daten in sie zu laden, die die folgenden Scala-Codes verwenden, was nicht die beste Lösung ist. Verwenden der Hive-Datenbank in 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() 

Ich las auch einige über hive-site.xml aber ich weiß nicht, wo sie zu finden und welche Veränderungen auf sie zu machen, um die Datenbank zu verbinden.

+0

Hive-Website (und andere Konfigurationsdateien) sind in der Ort, an dem Sie die Hadoop-Binärdateien installieren –

+0

Wenn Sie die Sandbox verwenden, sollte hier alles beantwortet werden, was Sie benötigen. Die letzten paar Befehle fragen von einer existierenden Hive-Tabelle ab http://hortonworks.com/hadoop-tutorial/using-hive-with-orc-from-apache-spark/ –

Antwort

2

Bei Verwendung von Spark und HiveContext ist keine Verbindung zu einer bestimmten Datenbank erforderlich.

Sie müssen einfach die Datei "hive-site.xml" in den Spark conf-Ordner kopieren (oder Sie können auch einen Symlink erstellen).

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

Dann in Funken kann man so etwas tun (ich kein scala Benutzer bin so die Syntax könnte falsch sein):

val hc = new org.apache.spark.sql.hive.HiveContext(sc) 
val result = hc.sql("SELECT col1, col2, col3 FROM dbname.tablename") 
result.show() 
Verwandte Themen