大数据自学3-Windows客户端DbVisualizer/SQuirreL配置连接hive

摘要:
我们已经学会了将数据从SqlServer导入HiveDB,并在Hue的Web界面上进行查询。接下来,我们将客户端工具配置为直接连接到Hive数据库。常用的工具有DbVisualizer、SQuirreLSQLClient和DataGrip。我们只尝试了前两种工具。花了一天多的时间才最终将Hive与这两个工具连接起来。这仍然非常令人满意。首先,解释环境。有些问题非常依赖于环境版本。

前面已经学习了将数据从Sql Server导入到Hive DB,并在Hue的Web界面可以查询,接下来是配置客户端工具直接连Hive数据库,常用的有DbVisualizer、SQuirreL SQL Client、DataGrip,只试用了前面两种,花了1天多时间最终实现了用这两款工具连Hive,还是挺有成就感的。

先把环境说明下,有些问题跟环境版本是非常依赖的。

Hadoop/Hive:使用的是CDH 5.15版

DbVisualizer:v 9.58

SQuirreL SQL Client:v 3.7

最先看到是这位大神的文章,”Hive学习之路 (五)DbVisualizer配置连接hive“,配置完后确无法连接,提示Required field 'client_protocol' is unset!,

 大数据自学3-Windows客户端DbVisualizer/SQuirreL配置连接hive第1张

查了一下,出现这个是因为jdbc的版本与服务器端Hive的jdbc版本不一致造成的,服务器端用的是CDH 5.15,我找到原始的CDH安装包,在cm-5.15.1sharecmfcommon_jars路径下找到对应版本的文件,主要的几个文件如下:

hadoop-common-2.6.0-cdh5.14.0

hive-common-1.1.0-cdh5.14.0

hive-exec-1.1.0-cdh5.14.0

hive-metastore-1.1.0-cdh5.14.0

hive-jdbc-1.1.0-cdh5.14.0

hive-service-1.1.0-cdh5.14.0

hive-shims-1.1.0-cdh5.14.0

hive-shims-common-1.1.0-cdh5.14.0

这些文件都不能缺少,否则会报ClassNotFoundException等错误

将这些jar替换之前的版本文件后再次连接时,又报错了,提示Illegal Hadoop Version:unknown (expected A. B. * format)

大数据自学3-Windows客户端DbVisualizer/SQuirreL配置连接hive第2张

这个要参照这个链接 https://github.com/timveil/hive-jdbc-uber-jar 来解决,原生的取Hadoop版本的方法VersionInfo有某些情况下会取不到,因此这位大神将这个方法改写了,真是牛人啊,真好奇为什么不直接将这段代码提交到开源库呢。

回归正题,按其上面的方法生成了一个hive-jdbc-uber-2.6.5.0-292文件,将此文件复制到jdbc 的路径下,在Driver Manager里重新引用这个jar,发现还是提示之前的错误“Required field 'client_protocol' is unset!”,这个错误已经很明确就是jdbc版本的问题,看了下从github下载下来的工程,发现了pom.xml中有以下段。尝试将hive有关的全部注释,再次打包生成hive-jdbc-uber-2.6.5.0-292文件,这次终于成功了。

大数据自学3-Windows客户端DbVisualizer/SQuirreL配置连接hive第3张

DBVisualier中的设定画面

大数据自学3-Windows客户端DbVisualizer/SQuirreL配置连接hive第4张

连接成功后查询某表的数据

大数据自学3-Windows客户端DbVisualizer/SQuirreL配置连接hive第5张

用SQuirreL SQL Client的基本步骤可以参照https://www.cnblogs.com/tgzhu/p/5760698.html,同样的现象,如果hadoop/hive的jar版本不一致或遗漏,也会报上面一样的错误,因此也是按上面的方法同样处理,不同的地方是,生成hive-jdbc-uber-2.6.5.0-292文件时,无需将hive的相关引用注释,我猜当有多个jdbc hive版本时,SQuirreL SQL Client里特殊的机制能找到正确的jdbc版本,但DbVisualizer不能。

 另外SQuirreL 配置时要记得步骤,当报Illegal Hadoop Version时,在jdbc Driver配置里要引入hive-jdbc-uber-2.6.5.0-292,同时将hadoop-common-2.6.0-cdh5.14.0的引用去除,保存后可以就可以了。

大数据自学3-Windows客户端DbVisualizer/SQuirreL配置连接hive第6张

如果Hive配置了Kerberos安全机制,使用这两个客户端连接起来会麻烦很多,参照https://community.hortonworks.com/content/kbentry/73458/connecting-dbvisualizer-and-datagrip-to-hive-with.html

免责声明:文章转载自《大数据自学3-Windows客户端DbVisualizer/SQuirreL配置连接hive》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Mysql : 函数多进程侦听同一端口下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

利用mybatis连接mysql数据库进行数据的操作

整体结构如下: 首先写大配置,该配置的作用是连接数据库。    可以将连接数据库的方法单独提出来,写在jdbc.propterties中,代码如下: jdbc.driver=com.mysql.jdbc.Driver //加载驱动jdbc.url=jdbc:mysql://localhost:3306/school //连接mysql数据库jdbc...

logstash中关于Jdbc输入配置选项详解

Setting Input type Required clean_run boolean No columns_charset hash No connection_retry_attempts number No connection_retry_attempts_wait_time number No jdbc_connec...

es在win下添加数据(二)

win环境下把MySql中的数据导入到Elasticsearch(二) 环境问题参考我上文: https://blog.csdn.net/qq_24265945/article/details/81168158 环境问题已经好了,接下来,我们讲实战。 下载:mysql-connector-java-5.1.46.zip该压缩包帮助mysql与其他平台...

jdbc executeQuery、executeUpdate 和 execute 区别

Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。 1>方法executeQuery 用于产生单个结果集(ResultSet)的语句,例如 SELECT 语句。 被使用最多的执行 SQL 语句的方法。这个方法被用来执行...

Doris扩展能力 踏雪扬尘

目录 审计日志插件 Doris On ES 创建ES索引 Doris中创建ES外表 Doris output plugin Hive External Table of Doris Doris 插件框架 ODBC External Table Of Doris 调试工具 审计日志插件 Doris 的审计日志插件是在 FE 的插件框架基础上开发...

Spring源码深度解析之数据库连接JDBC

Spring源码深度解析之数据库连接JDBC   JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,是数据库开发人员能够用...