hive 可以 類似jdbc連結, 但啟動的必須是hiveserver2, 才可以使用
hiveserver2
預設監聽 10000 埠
1, 啟動:
nohup $HIVE_HOME/bin/hiveserver2 1>/dev/null 2>&1 &
重定向輸出, 不干擾shell介面
nohup 使用者退出, 也可以繼續執行
或者
$HIVE_HOME/bin/hive --service hiveserver2 1>/dev/null 2>&1 &
2, 使用 Beeline 進行連線
beelin
使用beeline連結, 和普通的hive是一樣的, 只不過是遠端的方式連線的, 操作命令幾乎相同
!connect jdbc:hive2://192.168.208.109:10000 username password // org.apache.hive.jdbc.HIveDrvier
因為密碼為空, 所以不需要寫
!connect jdbc:hive2://localhost:10000 root // org.apache.hive.jdbc.HIveDrvier
可以直接連結
beelin -u jdbc:hive2://.. -n root
3, 退出
!quit
JDBC連結
java連結:
1, 匯入jar包:
${HIVE_HOME}/lib下的所有包
2, 匯入hadoop的包, 否則報錯
匯入的包為:
${HADOOP_HOME}/share/hadoop/common/*
package com.wenbronk.hive; import java.sql.*; /** * */ public class JDBCMain { private static String driverName = "org.apache.hive.jdbc.HiveDriver"; public static void main(String[] args) throws SQLException { try { Class.forName(driverName); Connection con = DriverManager.getConnection("jdbc:hive2://192.168.208.109:10000/default", "root", ""); String sql = "select * from people"; PreparedStatement state = con.prepareStatement(sql); ResultSet res = state.executeQuery(); while (res.next()) { System.out.println(res.getString(1) + "\t" + res.getString(2)); } } catch (ClassNotFoundException e) { e.printStackTrace(); System.exit(1); }finally { //close } } }
官網的例子坑太多了, python的連結沒有實際操作, 改天試下並修改!!!!
python 連結
需要先安裝包
pip install pyhs2
然後連結:
import pyhs2 with pyhs2.connect(host='localhost', port=10000, authMechanism="PLAIN", user='root', password='', database='default') as conn: with conn.cursor() as cur: #Show databases print cur.getDatabases() #Execute query cur.execute("select * from table") #Return column info from query print cur.getSchema() #Fetch table results for i in cur.fetch(): print i
使用正則匯入不規則資料
使用regexBuddy, 來正確匹配正規表示式
匹配nignx日誌;
系列來自尚學堂極限班