使用hivejdbc接入hive

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用hivejdbc接入hive相关的知识,希望对你有一定的参考价值。

参考技术A 数据平台需要开放hive给用户使用,用户通过http api,传入hql,即可获得相应的执行结果。当前hive执行有以下几种方式:

本文讨论hive jdbc的接入方式。hive jdbc实现了大部分jdbc方法,额外增加一些其他方法。

通过hive cli命令行时,会获得相应的日志输出,通过日志输出,可以获得一些有用的信息,那么通过hivejdbc执行的时候,也是可以拿到这个日志信息的。
只需要,重启一个线程,通过刚才的statement对象,就可以拿到这些日志信息。这些方法是,hivejdbc对jdbc的特有扩展。

hive sql在执行的过程中,可以通过调用hivejdbc的cancel方法,取消这次执行。还是通过statement变量。

Cognos 报告 Hive 数据源很慢?

【中文标题】Cognos 报告 Hive 数据源很慢?【英文标题】:Cognos reporting on Hive datasource is very slow? 【发布时间】:2016-10-24 14:01:52 【问题描述】:

我是 Cognos 新手,正在尝试使用 Hive JDBC 驱动程序在 Hadoop 之上创建报告。我能够通过 JDBC 连接到 Hive 并且能够生成报告,但是这里的报告运行速度非常慢。我在连接 DB2 时做了同样的工作,并且数据与 Hadoop 中的数据相同。与 Hive 之上的报告相比,报告的运行速度非常快。我在 Hadoop 和 DB2 中使用相同的数据集,但无法弄清楚为什么 Hadoop 之上的报告非常慢。我以伪分布式方式安装Hadoop并通过JDBC连接。

我安装了以下我使用的软件版本,

带有修订包 11 的 IBM Cognos 10.2.1, Apache Hadoop 2.7.2, Apache Hive 0.12。

两者都安装在不同的系统中,Cognos 安装在 Windows 7 之上,Hadoop 安装在 Red-Hat 之上。

谁能告诉我在设置 Cognos 或 Hadoop 时我可能在哪里出错。有什么方法可以加快 Cognos 中基于 Hadoop 的报告运行时间。

【问题讨论】:

Hive 通常会比 RDBMS 慢。您是否直接在 Hive 中测试过您的查询? 有什么办法可以提高速度,因为报表运行速度很慢,一个简单的报表只需要2到3分钟的时间 【参考方案1】:

当您说您以伪分布式模式安装 Hadoop 时,您是说您只在单个服务器上运行它吗?如果是这样,它永远不会像 DB2 那样快。 Hadoop 和 Hive 旨在在集群和规模上运行。在一个集群中运行 3 或 4 台服务器,您应该会发现在大型数据集上可以开始看到一些令人印象深刻的查询速度。

检查您是否允许 Cognos 查询服务访问超过其 Java 堆 (http://www-01.ibm.com/support/docview.wss?uid=swg21587457) 的默认内存量.

您将遇到的下一个问题是 Cognos 不知道 Hive SQL 的细节(或者我正在使用的 Impala)。这意味着任何非基本查询都将被转换为 select from 和 group by。最大的缺失部分是 where 子句,这意味着 Cognos 将尝试从 Hive 表中提取所有数据,然后在 Cognos 中进行过滤,而不是将其传递给它所属的 Hive。 Cognos 知道如何编写 DB2 SQL 和所有细节,因此它可以通过该工作负载。

查询越复杂,或任何特定于平台的函数等通常不会传递给 Hive(日期函数、分析函数等),因此请尝试构建您的数据和查询,以便它们在过滤器中是必需的。

使用 Hive 查询日志来监控 Cognos 正在运行的查询。还可以尝试将字段添加到查询中,然后将该字段拖到过滤器中,而不是直接从模型中拖到过滤器中。我发现这有助于让 Cognos 将过滤器包含在 where 子句中。

另一种选择是在 Report Studio 中使用直通 SQL 查询并将其全部写入 Hive 的 SQL。我刚刚为一组仪表板完成了此操作,这些仪表板需要一个包含 500 万行的事实表中的前 5 个堆栈。对于 5 行,Cognos 提取所有 500 万行,然后在 Cognos 中对它们进行排名。多次这样做,突然间,Cognos 将陷入困境。通过直通查询,我可以使用 Impala Rank() 函数并且只得到 5 行,这比 DB2 看到我在一个合适的(但很小的)集群上运行时所做的要快得多。

使用 Hive 的另一个考虑因素是您是在 Map Reduce 上使用 Hive 还是在 TEZ 上使用 Hive。根据一位同事的发现,在 Cognos 运行的查询类型上,TEZ 上的 Hive 比 Map Reduce 上的 Hive 快得多。

【讨论】:

以上是关于使用hivejdbc接入hive的主要内容,如果未能解决你的问题,请参考以下文章

通过 Spark 的 Hive JDBC 连接(Nullpointer 异常)

Hive JDBC 连接超时

Java使用JDBC连接Hive

支付宝支付接入(接入与验证)

环信如何接入?

接入移动安全联盟SDK