2013-07-19 2 views
2

У меня есть работа над Hadoop/hive. У меня есть hasoop и улей, который работает отлично в командной строке. i также создали мета-хранилище MySQL hive. Я определил имя базы данных HIVE-DB в файле hive-site.xml. Та же самая база данных доступна в MySQL> HIVE-DB. Но таблица, которая создается в командной строке hive, недоступна в команде mysql Prompt. И когда я хочу, чтобы создать то улей соединений JDBC получить следующие error..First это моя программа для создания соединений JDBC

package aa; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 

public class Main 
{ 
    private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver"; 
    public static void main(String args[]) 
    { 
     try { 

       Class.forName(driverName); 
      } 
     catch (ClassNotFoundException e) 
     { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       System.exit(1); 
     } 
     try 
     { 
      Connection con = DriverManager.getConnection("jdbc:hive://localhost:10001/default", "", ""); 
      Statement stmt = con.createStatement(); 
      String tableName = "recordssss"; 
      stmt.executeQuery("create table"+tableName+"(id int,name string)"); 

     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 


and then following error is display... because i have start hive as a hive server i.e 

**$HIVE_HOME/bin/hive --service hiveserver -p 10001** 

xception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.hive.service.ThriftHive$Client.sendBase(Ljava/lang/String;Lorg/apache/thrift/TBase;)V 
    at org.apache.hadoop.hive.service.ThriftHive$Client.send_execute(ThriftHive.java:110) 
    at org.apache.hadoop.hive.service.ThriftHive$Client.execute(ThriftHive.java:102) 
    at org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:187) 
    at org.apache.hadoop.hive.jdbc.HiveStatement.execute(HiveStatement.java:127) 
    at org.apache.hadoop.hive.jdbc.HiveConnection.configureConnection(HiveConnection.java:126) 
    at org.apache.hadoop.hive.jdbc.HiveConnection.<init>(HiveConnection.java:121) 
    at org.apache.hadoop.hive.jdbc.HiveDriver.connect(HiveDriver.java:104) 
    at java.sql.DriverManager.getConnection(DriverManager.java:620) 
    at java.sql.DriverManager.getConnection(DriverManager.java:200) 
    at aa.Main.main(Main.java:25) 


    enter code here 

so pls help me i have describe the problem to you so pls dear anyone help me 

ответ

1

Похоже, вы не используете соответствующую библиотеку в коде клиента. Используемые банки могут быть неправильными версиями. Пожалуйста, проверьте их один раз.

+0

У меня есть версия улья 0.10 и версия hadoop 1.1.2 все файлы jar в eclipse имеют 0.10 –

+0

commons-logging-1.1.3.jar, hadoop-core-1.1.2.jar, hive-exec-0.10.0 .jar, улья-0.10.0.jar JDBC, улей-metastore-0.10.0.jar, улей-сервис-0.10.0.jar, libfb303.jar, SLF4J-апи-1.6.1.jar, SLF4J-log4j12 -1.6.1.jar, log4j-1.2.16.jar это все jar, которые я вставляю в проект lib ... –

+0

@Charnjeet Я думаю, что дистрибутив hive-0.10.0 содержит libfb303-0.9.0.jar. Используйте libfb303-0.9.0.jar вместо libfb303.jar, а также libthrift-0.9.0.jar, а также от HIVE_HOME/lib. У меня такое чувство, что проблема заключается в этих двух баночках (libthrift-0.9.0.jar и libfb303.jar). Поиграйте с этими двумя баночками, надеюсь, это сделает трюк. Удачи !!! – nJn

Смежные вопросы