java 操做hive和impalajava
第一是maven加入jdbc庫sql
<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>1.1.0-cdh5.8.2</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.7.3</version> </dependency>
注意:apache
hive-jdbc版本最好要跟impala版本對應上,不然會出現一些問題,好比我執行測試過程當中碰到程序一直在運行,不出結果maven
cloudera repositoryoop
<repositories> <repository> <id>cloudera</id> <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url> </repository> </repositories>
測試代碼:測試
package org.apache.zeppelin.impala; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import java.sql.*; /** * Created by moonx on 2016/9/29. */ public class ImpalaTest { private static String driverName = "org.apache.hive.jdbc.HiveDriver"; @Test public void testHive() throws SQLException,ClassNotFoundException { Class.forName(driverName); Connection con = DriverManager.getConnection( "jdbc:hive2://10.0.71.31:10000", "hive", ""); Statement stmt = con.createStatement(); String sql = "select * from test" ; ResultSet res = stmt.executeQuery(sql); while (res.next()) { System.out.println(String.valueOf(res.getString(1)) + "\t" + res.getInt(2)); } } @Test public void testImpala() throws SQLException,ClassNotFoundException{ Class.forName(driverName); Connection con = DriverManager.getConnection( "jdbc:hive2://10.0.71.31:21050/;auth=noSasl", "hive", ""); Statement stmt = con.createStatement(); String sql = "select * from test" ; ResultSet res = stmt.executeQuery(sql); while (res.next()) { System.out.println(String.valueOf(res.getString(1)) + "\t" + res.getInt(2)); } } }
hive 和impala如何區分:url
經過比較咱們能夠看到代碼都是同樣的,就是端口號不同code
hive用的10000,impala用的21050xml
就是這些區別hadoop