MapReduce基础开发之九JDBC连接Hive
生活随笔
收集整理的這篇文章主要介紹了
MapReduce基础开发之九JDBC连接Hive
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、eclipse建工程,引入$HIVE_HOME/lib的包和$Hadoop_HOME/lib的包(一般核心包就可以,具體根據開發需求),導出jar包(不帶第三方jar);
? ?注意:shell腳本最好在centos下編寫,如果是Windows下編寫因為字符問題執行起來會出現語法錯誤
? ?#vi /tmp/hivejdbc.sh
#!/bin/bashHADOOP_HOME=/usr/lib/hadoop HIVE_HOME=/usr/lib/hive JAVA_HOME=/usr/lib/javaCLASSPATH=$CLASSPATH: for i in /usr/lib/hive/lib/*.jar; do CLASSPATH=$CLASSPATH:$i donefor i in /usr/lib/hadoop/client/*.jar; do CLASSPATH=$CLASSPATH:$i doneecho $CLASSPATH java -cp $CLASSPATH:/tmp/hivejdbc.jar com.hive.HiveJdbc
? 執行腳本sh /tmp/hivejdbc.sh看結果。
? 出現提示沒有hdfs中hive用戶的文件權限/user/hive/warehouse;
? 執行命令hadoop fs -chmod 777 /user/hive?
3、實際上,在性能上,不建議通過jdbc連接hive來處理。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
? ? 這里是Hive2,代碼如下:
package com.hive;import java.sql.SQLException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager;public class HiveJdbc {private static String driverName = "org.apache.hive.jdbc.HiveDriver";public static void main(String[] args) throws SQLException {try {Class.forName(driverName);} catch (ClassNotFoundException e) {e.printStackTrace();System.exit(1);}Connection con = DriverManager.getConnection("jdbc:hive2://IP:10000/default", "", "");Statement stmt = con.createStatement();String tableName = "JDBCTest";stmt.execute("drop table if exists " + tableName);stmt.execute("create table " + tableName + " (key int, value string)");System.out.println("Create table success!");// show tablesString sql = "show tables '" + tableName + "'";System.out.println("Running: " + sql);ResultSet res = stmt.executeQuery(sql);if (res.next()) {System.out.println(res.getString(1));}// describe tablesql = "describe " + tableName;System.out.println("Running: " + sql);res = stmt.executeQuery(sql);while (res.next()) {System.out.println(res.getString(1) + "\t" + res.getString(2));}//select tablesql = "select * from " + tableName;res = stmt.executeQuery(sql);while (res.next()) {System.out.println(String.valueOf(res.getInt(1)) + "\t"+ res.getString(2));}} } 2、根據hadoop和hive集群部署情況,編寫腳本并執行,加入hive和hadoop的jar包。? ?注意:shell腳本最好在centos下編寫,如果是Windows下編寫因為字符問題執行起來會出現語法錯誤
? ?#vi /tmp/hivejdbc.sh
#!/bin/bashHADOOP_HOME=/usr/lib/hadoop HIVE_HOME=/usr/lib/hive JAVA_HOME=/usr/lib/javaCLASSPATH=$CLASSPATH: for i in /usr/lib/hive/lib/*.jar; do CLASSPATH=$CLASSPATH:$i donefor i in /usr/lib/hadoop/client/*.jar; do CLASSPATH=$CLASSPATH:$i doneecho $CLASSPATH java -cp $CLASSPATH:/tmp/hivejdbc.jar com.hive.HiveJdbc
? 執行腳本sh /tmp/hivejdbc.sh看結果。
? 出現提示沒有hdfs中hive用戶的文件權限/user/hive/warehouse;
? 執行命令hadoop fs -chmod 777 /user/hive?
3、實際上,在性能上,不建議通過jdbc連接hive來處理。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的MapReduce基础开发之九JDBC连接Hive的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法导论之平摊分析(动态表)
- 下一篇: MapReduce基础开发context