BigData/Hive

hive thrift java 예제

sidcode 2013. 12. 14. 00:03

HIVE THRIFT를 이용한 JAVA EXAMPLE (eclipse maven plugin) 


Hive Server 켜기 두가지 방법

HIVE_PORT는 원하는 포트로 적용 (콘솔)

$ HIVE_PORT=3460 hive --service server


hadoop 실행시 같이 실행 

$ vi $HADOOP_HOME/sbin/start-all.sh      (hadoop 2.2.0 기준입니다.)

 스크립트 제일 아래 추가 

# start hive server

if [ -f "${HIVE_HOME}"/bin/hive ]; then

  HIVE_PORT=3406 "${HIVE_HOME}"/bin/hive --service hiveserver &

fi



이클립스 maven plugin이 설치되었다는 전제로 진행합니다. ( 참고 : http://sidcode.wordpress.com/2013/11/19/ubuntu-hadoop-eclipse-plugin-maven-%EC%84%A4%EC%B9%98/)


maven 프로젝트 생성 생략 아래 pom.xml이 뭔지 모르시겠다면  이사이트를 (http://hadoopi.wordpress.com/2013/05/25/setup-maven-project-for-hadoop-in-5mn/)참조 하시어 프로젝트를 하나 실행 해보시기를 바랍니다.'



POM.XML 설정 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.sidcode</groupId>

  <artifactId>ex.hive</artifactId>

  <version>0.0.1</version>

  <dependencies>

  <dependency>

  <groupId>org.slf4j</groupId>

  <artifactId>slf4j-log4j12</artifactId>

  <version>1.7.5</version>

  </dependency>

  <dependency>

  <groupId>org.apache.hive</groupId>

  <artifactId>hive-exec</artifactId>

  <version>0.12.0</version>

  </dependency>

  <dependency>

  <groupId>org.apache.hive</groupId>

  <artifactId>hive-jdbc</artifactId>

  <version>0.12.0</version>

  </dependency>

  <dependency>

  <groupId>org.apache.hive</groupId>

  <artifactId>hive-service</artifactId>

  <version>0.12.0</version>

  </dependency>

  <dependency>

  <groupId>org.apache.hive</groupId>

  <artifactId>hive-metastore</artifactId>

  <version>0.12.0</version>

  </dependency>

  <dependency>

  <groupId>org.apache.hadoop</groupId>

  <artifactId>hadoop-core</artifactId>

  <version>1.2.1</version>

  </dependency>

  </dependencies>

</project>



HIVE.JAVA 생성

package ex.hive;


import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.sql.DriverManager;


/*

 * hive thrift example 0.0.1 by sidcode (2013-12-13)

 */


public class HIVE {

private static String dn = "org.apache.hadoop.hive.jdbc.HiveDriver";


public static void main(String[] args) throws SQLException {

try {

Class.forName(dn); // JDBC DRIVER LOAD

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.exit(1);

}


System.out.println("============ START ============");


// (jdbc:hive://HostName 또는 IP:port/default", "id", "pass")

Connection conn = DriverManager.getConnection("jdbc:hive://localhost:3406/default", "hive", "hive");


Statement stmt = conn.createStatement();

try { // 테이블 POKE 생성, 이미 생성되었을시 하단에 문구 출력 시킴

stmt.executeQuery("CREATE TABLE POKES(foo INT, bar STRING)"); // 테이블생성

} catch (SQLException e) {

// TODO: handle exception

System.out.println("Already table pokes!! :D");

}


ResultSet rs = stmt.executeQuery(getQuery());

if (!rs.next()) { // 최초 실행 유무 체크 하여 데이터 로드

// "/usr/local/hadoop/hive" 본인의 hive가 설치된경로

stmt.executeQuery("LOAD DATA LOCAL INPATH '/usr/local/hadoop/hive/examples/files/kv1.txt' OVERWRITE INTO TABLE POKES"); // 데이터 로드

System.out.println("LOAD DATE......");

}


rs = stmt.executeQuery(getQuery());

while (rs.next()) {

System.out.println(rs.getString(1) + "  :  " + rs.getString(2));

}

System.out.println("============END============");

conn.close();

}


// query

private static String getQuery() {

String sql = "SELECT * FROM POKES";

return sql;

}

}




최종 완료 테스트 

이클립스에서 저장 후 실행(Run) 한후 아래와같이 되면 수고하셨습니다. :D