11

J'utilise HDP-2.6.0.3 mais j'ai besoin de Zeppelin 0.8, donc je l'ai installé comme un service indépendant. Quand je lance:Comment obtenir un service indépendant Zeppelin pour voir Hive?

%sql 
show tables 

Je ne reçois rien en arrière et je reçois « table introuvable » quand je lance Spark2 commandes SQL. Les tableaux peuvent être vu dans le Zeppelin 0.7 qui fait partie de HDP.

Quelqu'un peut-il me dire ce qui me manque, pour Zeppelin/Spark pour voir Hive?

Les étapes que j'effectuées pour créer le zep0.8 sont les suivantes:

maven clean package -DskipTests -Pspark-2.1 -Phadoop-2.7-Dhadoop.version=2.7.3 -Pyarn -Ppyspark -Psparkr -Pr -Pscala-2.11 

Copié zeppelin-site.xml et shiro.ini de /usr/hdp/2.6.0.3-8/zeppelin/conf à/home/ed/zeppelin/conf.

/home/ed/zeppelin/conf/zeppeli-env.sh créé dans lequel je mets les éléments suivants:

export JAVA_HOME=/usr/jdk64/jdk1.8.0_112 
export HADOOP_CONF_DIR=/etc/hadoop/conf 
export ZEPPELIN_JAVA_OPTS="-Dhdp.version=2.6.0.3-8" 

Copié /etc/hive/conf/hive-site.xml/home/ed/zeppelin/conf

EDIT: J'ai aussi essayé:

import org.apache.spark.sql.SparkSession 
val spark = SparkSession 
      .builder() 
      .appName("interfacing spark sql to hive metastore without configuration file") 
      .config("hive.metastore.uris", "thrift://s2.royble.co.uk:9083") // replace with your hivemetastore service's thrift url 
      .config("url", "jdbc:hive2://s2.royble.co.uk:10000/default") 
      .config("UID", "admin") 
      .config("PWD", "admin") 
      .config("driver", "org.apache.hive.jdbc.HiveDriver") 
      .enableHiveSupport() // don't forget to enable hive support 
      .getOrCreate() 

même résultat, et:

import java.sql.{DriverManager, Connection, Statement, ResultSet} 
val url = "jdbc:hive2://" 
val driver = "org.apache.hive.jdbc.HiveDriver" 
val user = "admin" 
val password = "admin" 
Class.forName(driver).newInstance 
val conn: Connection = DriverManager.getConnection(url, user, password) 

qui donne:

java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient 
ERROR XSDB6: Another instance of Derby may have already booted the database /home/ed/metastore_db 

Correction d'une erreur avec:

val url = "jdbc:hive2://s2.royble.co.uk:10000" 

mais toujours pas de tables :(

Répondre

3

Cela fonctionne:

import java.sql.{DriverManager, Connection, Statement, ResultSet} 
val url = "jdbc:hive2://s2.royble.co.uk:10000" 
val driver = "org.apache.hive.jdbc.HiveDriver" 
val user = "admin" 
val password = "admin" 
Class.forName(driver).newInstance 
val conn: Connection = DriverManager.getConnection(url, user, password) 
val r: ResultSet = conn.createStatement.executeQuery("SELECT * FROM tweetsorc0") 

mais j'ai la douleur de convertir le resultset à un dataframe. Je préférerais que SparkSession fonctionne et j'obtiens un dataframe donc j'ajouterai une prime plus tard aujourd'hui.

+0

Avez-vous résolu votre problème? –

+0

Je l'ai eu pour fonctionner mais pas le code SparkSession. – schoon

0

J'ai eu un problème similaire dans Cloudera Hadoop. Dans mon cas, le problème était que spark sql n'a pas vu mon métastore de la ruche. Donc, lorsque j'ai utilisé mon objet Spark Session pour le SQL spark, je n'ai pas pu voir mes tables précédemment créées. J'ai réussi à le résoudre avec l'ajout dans zeppelin-env.sh

export SPARK_HOME=/opt/cloudera/parcels/SPARK2/lib/spark2 
export HADOOP_HOME=/opt/cloudera/parcels/CDH 
export SPARK_CONF_DIR=/etc/spark/conf 
export HADOOP_CONF_DIR=/etc/hadoop/conf 

(je suppose que pour les travaux de Horton ces chemins sont autre chose). Je change aussi spark.master de local [*] en yarn-client à l'interface utilisateur de l'interpréteur. Plus important encore J'ai manuellement copié hive-site.xml dans/etc/spark/conf/ parce que je pensais que c'était étrange que ce n'était pas dans ce répertoire et cela a résolu mon problème. Donc, mon conseil est de voir si hive-site.xml existe dans votre SPARK_CONF_DIR et si ce n'est pas le cas, ajoutez-le manuellement. Je trouve également un guide pour Horton Works et zeppelin au cas où cela ne fonctionnera pas.