-
hive thrift java 예제BigData/Hive 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
'BigData > Hive' 카테고리의 다른 글
hive with mysql 설치 (0) 2013.12.10