如何使用jdbc与hive建立连接?

kxe2p93d  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(362)

如何使用配置单元配置jdbc

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();
   }
}

akshay@akshay:~$ javac table.java 
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 
akshay@akshay:~$ 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)

my hive-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配置了hive的meta store。那么我的connectionurl和drivername在java连接代码中应该是什么呢?我不会走错方向。请提供上述问题的解决方案。

v64noz0r

v64noz0r1#

要使用JDBCAPI运行配置单元查询,需要首先启动hiveserver2。在hive-site.xml文件中配置thrift服务器端口,如下所示

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

使用以下命令启动hiveserver2

cd $HIVE_HOME/bin    
./hiveserver2

您还需要将以下依赖项添加到您的项目中。

Hive-jdbc-*-standalone.jar

hive-jdb-*.jar

hive-metastore-*.jar

hive-service-*.jar

之后试着运行程序。有关使用java程序运行配置单元查询的逐步过程的详细信息,请参阅本博客。

相关问题