zoukankan      html  css  js  c++  java
  • 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) + "	" + 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日志;  

     系列来自尚学堂极限班

  • 相关阅读:
    简述智障版本搜索引擎架构
    kaggle PredictingRedHatBusinessValue 简单的xgboost的交叉验证
    机器学习速查表
    World final 2017 题解
    微博爬虫
    喵哈哈村的魔法考试 Round #21 (Div.2) 题解
    喵哈哈村的魔法考试 Round #20 (Div.2) 题解
    Tinkoff Challenge
    常用的机器学习&数据挖掘知识(点)总结
    喵哈哈村的魔法考试 Round #19 (Div.2) 题解
  • 原文地址:https://www.cnblogs.com/wenbronk/p/7376086.html
Copyright © 2011-2022 走看看