24-hadoop-hiveserver2&jdbc-正则数据导入

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日志;  

 

 

 

 系列来自尚学堂极限班

posted @ 2017-08-17 19:39  bronk  阅读(334)  评论(0编辑  收藏  举报