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

     系列来自尚学堂极限班

  • 相关阅读:
    easyui datagrid 让某行复选框置灰不能选
    easyui前台改变datagrid某单元格的值
    javascript Date format(js日期格式化)
    SVN中trunk,branches,tags用法详解
    ecshop后台新功能权限的添加
    jquery创建一个新的节点对象(自定义结构/内容)的好方法
    kafka系列九、kafka事务原理、事务API和使用场景
    kafka系列八、kafka消息重复和丢失的场景及解决方案分析
    kafka系列七、kafka核心配置
    kafka系列六、java管理kafka Topic
  • 原文地址:https://www.cnblogs.com/wenbronk/p/7376086.html
Copyright © 2020-2023  润新知