2017-04-03 36 views
0

如何配置JDBC与HIVE如何使用JDBC建立与HIVE的连接?

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

public class table { 
    private static String driverName = "org.apache.hadoop.hive.mysql.jdbc.Driver"; 

    public static void main(String[] args) throws SQLException { 
     // Register driver and create driver instance 

     try { 
     Class.forName(driverName); 
    } catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

     Connection con = DriverManager.getConnection("jdbc:mysql://localhost:1000/default", "", ""); 
     Statement stmt = con.createStatement(); 

     stmt.executeQuery("CREATE DATABASE userdb"); 
    // System.out.println(“Database userdb created successfully”); 

     con.close(); 
    } 
} 

[email protected]:~$ javac table.java 
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 
[email protected]:~$ java table 
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 
java.lang.ClassNotFoundException: org.apache.hadoop.hive.mysql.jdbc.Driver 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at table.main(table.java:14) 
Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:1000/default 
    at java.sql.DriverManager.getConnection(DriverManager.java:689) 
    at java.sql.DriverManager.getConnection(DriverManager.java:247) 
    at table.main(table.java:20) 

我的蜂房site.xml中包含

<property> 
    <name>javax.jdo.option.ConnectionDriverName</name> 
    <value>com.mysql.jdbc.Driver</value> 
    <description>MySQL JDBC driver class</description> 
    </property> 

<property> 
    <name>javax.jdo.option.ConnectionURL</name> 
    <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</value> 
    <description>metadata is stored in a MySQL server </description> 
</property> 

我已经配置蜂巢元店与MySQL。那么我的ConnectionURL和Drivername在JAVA连接代码中应该是什么? 我不明白我出错的地方。请为上述问题提供解决方案。

回答

0

对于使用JDBC API运行hive查询,您需要首先启动hiveserver2。配置在蜂房site.xml文件的节俭服务器端口如下图所示

<property> 
<name>hive.server2.thrift.port</name> 
<value>10000</value> 
<description>TCP port number to listen on, default 10000</description> 
</property> 

使用命令

cd $HIVE_HOME/bin  
./hiveserver2 

还需要下面的依赖关系添加到项目启动hiveserver2。

Hive-jdbc-*-standalone.jar 

hive-jdb-*.jar 

hive-metastore-*.jar 

hive-service-*.jar 

之后,尝试运行程序。您可以参考to this blog获取更多关于使用java程序运行配置单元查询的步骤。

相关问题