2016-05-19 13 views
0

Wir laufen Spark-Streaming, um den Feed von Kafka zu bekommen. Jetzt versuchen wir, Phoenix JDBC zu verwenden, um einige Daten aus HBASE zu extrahieren. Wenn ich den Code in local ausführe läuft es ohne irgendwelche Probleme gut, aber wenn ich es mit Garn-Cluster laufen lasse, wirft es unter Ausnahme.Apache Phoenix 4.5.1 mit Funke 1.3.1 Classnotfundexception

Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.ipc.controller.ClientRpcControllerFactory 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:190) 

Unten finden Sie den Code-Schnipsel:

def check(arg0:String,arg1:String) 
{ 
    val query = "query" 

     Class.forName("org.apache.phoenix.jdbc.PhoenixDriver"); 
    var conn = DriverManager.getConnection("jdbc:phoenix:IP:zkport:/znode"); 
     val statement = conn.createStatement() 
     val resultSet = statement.executeQuery(query) 
     var out=""; 
     while(resultSet.next()) 
     { 
      out=resultSet.getString("..") 
     } 
} 

Und die SBT Abhängigkeit hinzugefügt

libraryDependencies += "org.apache.phoenix" % "phoenix-core" % "4.5.1-HBase-1.0" 

ich manuell für die fehlende Klasse überprüft, und es ist dort im Glas Phoenix-Core . Was ist der Grund, warum Garn/Funkenwurf eine Ausnahme darstellt? Das gleiche Problem wird unter Apache Phoenix (4.3.1 and 4.4.0-HBase-0.98) on Spark 1.3.1 ClassNotFoundException gemeldet, aber ich habe versucht, es als separaten Klassenpfad hinzuzufügen, der auch nicht funktioniert. Könnte mir jemand bei der Lösung dieses Problems helfen

Antwort

0

Das Hinzufügen von Phoenix-Core zu classpath.txt hat funktioniert. Aber ein komisches Problem.

Verwandte Themen