2016-05-09 5 views
0

ich versuche, in HIVE (im Sandkasten von Hortonworks) zu verbinden, und ich bin receving die Meldung unter:Scala in HIVE über JDBC zu verbinden - HDP

Exception in thread "main" java.sql.SQLException : keine passenden Treiber für jdbc gefunden: hive2: //sandbox.hortonworks.com: 10000/default

Maven Abhängigkeiten:

<dependencies> 
    <dependency>              
     <groupId>org.apache.spark</groupId>      
     <artifactId>spark-core_2.10</artifactId>     
     <version>${spark.version}</version>      
     <scope>provided</scope>         
    </dependency>              
    <dependency>              
     <groupId>org.apache.spark</groupId>      
     <artifactId>spark-sql_2.10</artifactId>     
     <version>${spark.version}</version>      
     <scope>provided</scope>         
    </dependency>              
    <dependency>              
     <groupId>org.apache.spark</groupId>      
     <artifactId>spark-hive_2.10</artifactId>     
     <version>${spark.version}</version>      
     <scope>provided</scope>         
    </dependency>              
</dependencies> 

Code:

// **** SetMaster is Local only to test *****         
    // Set context                 
    val sparkConf = new SparkConf().setAppName("process").setMaster("local")  
    val sc = new SparkContext(sparkConf)           
    val hiveContext = new HiveContext(sc)           

    // Set HDFS                 
    System.setProperty("HADOOP_USER_NAME", "hdfs")         
    val hdfsconf = SparkHadoopUtil.get.newConfiguration(sc.getConf)    
    hdfsconf.set("fs.defaultFS", "hdfs://sandbox.hortonworks.com:8020")   
    val hdfs = FileSystem.get(hdfsconf)           

    // Set Hive Connector               
    val url = "jdbc:hive2://sandbox.hortonworks.com:10000/default"     
    val user = "username"               
    val password = "password"              

    hiveContext.read.format("jdbc").options(Map("url" -> url,      
    "user" -> user,                
    "password" -> password,              
    "dbtable" -> "tablename")).load()     

Antwort

0

Sie benötigen Hive JDBC-Treiber in Ihrer Anwendung Classpath haben:

<dependency>              
    <groupId>org.apache.hive</groupId>      
    <artifactId>hive-jdbc</artifactId>     
    <version>1.2.1</version>      
    <scope>provided</scope>         
</dependency> 

außerdem an, Treiber explizit in Optionen:

"driver" -> "org.apache.hive.jdbc.HiveDriver" 

Allerdings ist es besser, JDBC zu überspringen und nativen Spark-Integration verwenden, um mit Hive , da es möglich ist, Hive-Metastore zu verwenden. Siehe http://spark.apache.org/docs/latest/sql-programming-guide.html#hive-tables

+0

Gute Sache, ich versuche es zu verwenden, irgendwelche Ideen, wie man in Sandobox von meinem lokalen Rechner verbinden, ich meine, dass ich in einer lokalen Maschine arbeite und ich in Sandobox verbinden muss, wenn ich gerade Öffnen Sie einen Kontext, ich nehme an, dass ich in Sandbox arbeite. –

+0

Ich empfehle, von Hive-Konfiguration zu starten [hive-site.xml] (https://github.com/apache/spark/blob/master/sql/hive/src/test/resources/data/conf/hive-site. xml), vorausgesetzt, Sie haben bereits eine Hadoop-Konfiguration eingerichtet. Stellen Sie außerdem sicher, dass Ihre Version von Spark mit Hive-Unterstützung erstellt wurde (Standard binary ist nicht) –

Verwandte Themen