文档章节

hive JDBC 进度和日志查看

OttoWu
 OttoWu
发布于 2016/07/04 18:00
字数 555
阅读 1842
收藏 3
点赞 0
评论 0

hive JDBC 进度和日志查看

@(hive)[JDBC|进度|日志] hive的JDBC提供了java连接hiveserver2查询的能力,但是hive JDBC有别于关系型数据库,一个查询语句可能要在十几分钟到几十分钟才会返回结果,而hive JDBC并不会实时显示进度和日志,这样在查询的时候对用户不是很友好,需要在执行sql的时候显示进度。

在后台查看hiverserver2的日志中发现,其实hiveserver2在执行一个sql查询的时候是会捕捉到MR运行的进度和日志的,所以只要能把hiverser2获取到MR进度的日志捕捉到,就能实现显示进度的功能。在之前的hive 0.70.9版本中我们是直接修改了hive-jdbc的源码来实现日志和数据的分离和重定向显示。在hive 1.1.0中其实已经有了可以获取进度的API了,分别是HiveStatement中的 List<String> getQueryLog()List<String> getQueryLog(boolean incremental, int fetchSize)boolean hasMoreLogs()三个方法,借助这三个方法,就可以实时显示sql 查询进度。

完整API地址为 ---HiveStatement

具体实现如下

	// 代码不完整,仅供参考
	public class HiveExecuter {
	
    static Statement stmt = null;

    static class GetLogThread extends Thread {

        public void run() { //真生的输出运行进度的thread
            if (stmt == null) {
                return;
            }
            HiveStatement hiveStatement = (HiveStatement) stmt;
            try {
                while (!hiveStatement.isClosed() && ((HiveStatement) stmt).hasMoreLogs()) {
                    try {
                        for (String log : ((HiveStatement) stmt).getQueryLog(true, 100)) {
                            System.out.println(log);
                        }
                        Thread.currentThread().sleep(500L);
                    } catch (SQLException e) { //防止while里面报错,导致一直退不出循环
                        e.printStackTrace();
                        return;
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                        return;
                    }
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        // ... 一些初始化
        // 加载数据连接
        try {
            Class.forName("org.apache.hive.jdbc.HiveDriver");
            connection = DriverManager.getConnection(hiveConnection, username, "");
            stmt = connection.createStatement();

            new GetLogThread().start();
            rs = stmt.executeQuery(preSql);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (rs != null) {
                    rs.close();
                }
                if (stmt != null) {
                    stmt.close();
                }

                if (connection != null && !connection.isClosed()) {
                    connection.close();
                }

            } catch (SQLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}

© 著作权归作者所有

共有 人打赏支持
OttoWu
粉丝 3
博文 17
码字总数 31419
作品 0
杭州
伪分布式hadoop2.2.0+hive0.12.0安装

由于本人笔记本配置太低,安装一个虚拟机就卡的一戳一戳的,,,,所以只能安装伪分布式的集群 真正解决问题的方法是日志,所以下次你再出问题的时候,请最先找到你的日志文件,他会告诉你,...

LIPING234
2013/11/06
0
4
CDH5.11.2安装启动hive 启动失败解决办法

1,通过Cloudera Manager添加Hive服务,在启动Hive的时候遇到错误: .org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driver 这种情况,猜测是缺少jdbc驱动,于是添加j...

小黑放大
05/25
0
0
VirtualBox、CentOS 6.4、Hadoop、Hive玩起

1 安装VirtualBox: VirtualBox是一款开源免费的并且非常强大的虚拟机软件,同时支持X86和AMD64/Intel64,可以在多个操作系统平台上运行。与同性质的VMWare和Virtual PC比较,VirtualBox独到...

smile_zjw
2013/11/26
0
1
阿里年薪50WJAVA工程师转大数据学习路线!

大数据有两个方向,一个是偏计算机的,另一个是偏经济的。你学过Java,所以你可以偏将计算机的。 Java程序员想转大数据可行吗?Java是全世界使用人数最多的编程语言。不少程序员选择Java做为...

JAVA丶学习
04/25
0
0
手把手教你搭建hadoop+hive测试环境(新手向)

本文由 网易云 发布 作者:唐雕龙 本篇文章仅限内部分享,如需转载,请联系网易获取授权。 面向新手的hadoop+hive学习环境搭建,加对我走过的坑总结,避免大家踩坑。 对于hive相关docker,并...

wangyiyungw
05/10
0
0
hive(05)、使用JAVA对数据仓库HIVE进行操作

本文代码码云地址:https://gitee.com/MaxBill/HSDP 在前文中我们实践了基于hadoop的数据仓库hive的安装、配置、应用、扩展等,那么我们在实际中该如何通过程序调用(用户接口)开发呢,hiv...

MaxBill
01/16
0
0
Hive在windows端的图形化连接工具

Hive官网上介绍过几种windows端的连接方式,本文主要介绍如何使用Oracle SQL Developer连接hive。 1.下载并解压Oracle SQL Developer 从 http://www.oracle.com/technetwork/developer-tool...

Matthew.L
05/29
0
0
Cannot find hadoop installation: $HADOOP_HOME m...

Cannot find hadoop installation: $HADOOP_HOME must be set or hadoop must be in the path 解决: root@ubuntu118:~# nano /etc/profile 在其中添加HADOOP_HOME如下: export JAVAHOME=/u......

闵开慧
2012/08/28
0
0
HiveServer 与 HiveServer2

今天在使用 hive --service hiveserver 命令启动 hiveserver 时出错了,hive版本1.2.0 ,错误信息如下: -bash-4.1$ hive --service hiveserver -p 10002 & Starting Hive Thrift Server Ex......

张超
2015/08/25
0
0
hive设置外部数据仓库(36)

使用MySQL作为hive的metastore 1.1 安装mysql 1.2 把mysql-connector-java-11.10.jar放到hive的lib目录下 1.3 修改hive/conf目录下的文件hive-site.xml <property> <name>javax.jdo.option.C......

肖鋭
2014/04/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0
[机器学习]回归--Decision Tree Regression

CART决策树又称分类回归树,当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值;当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很...

wangxuwei
昨天
1
0
Redis做分布式无锁CAS的问题

因为Redis本身是单线程的,具备原子性,所以可以用来做分布式无锁的操作,但会有一点小问题。 public interface OrderService { public String getOrderNo();} public class OrderRe...

算法之名
昨天
10
0
143. Reorder List - LeetCode

Question 143. Reorder List Solution 题目大意:给一个链表,将这个列表分成前后两部分,后半部分反转,再将这两分链表的节点交替连接成一个新的链表 思路 :先将链表分成前后两部分,将后部...

yysue
昨天
1
0
数据结构与算法1

第一个代码,描述一个被称为BankAccount的类,该类模拟了银行中的账户操作。程序建立了一个开户金额,显示金额,存款,取款并显示余额。 主要的知识点联系为类的含义,构造函数,公有和私有。...

沉迷于编程的小菜菜
昨天
1
0
从为什么别的队伍总比你的快说起

在机场候检排队的时候,大多数情况下,别的队伍都要比自己所在的队伍快,并常常懊悔当初怎么没去那个队。 其实,最快的队伍只能有一个,而排队之前并不知道那个队快。所以,如果有六个队伍你...

我是菜鸟我骄傲
昨天
1
0
分布式事务常见的解决方案

随着互联网的发展,越来越多的多服务相互之间的调用,这时候就产生了一个问题,在单项目情况下很容易实现的事务控制(通过数据库的acid控制),变得不那么容易。 这时候就产生了多种方案: ...

小海bug
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部