DBVisualizer 和 HIVE
Posted
技术标签:
【中文标题】DBVisualizer 和 HIVE【英文标题】:DBVisualizer and HIVE 【发布时间】:2016-03-21 20:12:27 【问题描述】:我正在使用 DBVisualizer 9.2 和 Cloudera 5.4.1
我想设置我的 db 可视化工具,以便我可以从 dbvisualizer 工具查询 hive 数据库。
我从这里下载了 HIVE 的 jdbc 驱动程序
http://www.cloudera.com/downloads/connectors/hive/jdbc/2-5-16.html
我提取了/Users/User1/.dbvis/jdbc中的所有jar文件
但是现在,当我启动 dbvisualizer 时,我得到一个错误
Ignored as there is no matching Default Driver for "com.cloudera.hive.jdbc41.HS1Driver", "com.cloudera.hive.jdbc41.HS2Driver"
/Users/User1/.dbvis/jdbc
HiveJDBC41.jar
TCLIServiceClient.jar
hive_metastore.jar
hive_service.jar
libfb303-0.9.0.jar
libthrift-0.9.0.jar
log4j-1.2.14.jar
ql.jar
slf4j-api-1.5.11.jar
slf4j-log4j12-1.5.11.jar
zookeeper-3.4.6.jar
所以我的问题是,有没有人成功配置 DBVisualizer 工具连接到 cloudera hive 服务器?
【问题讨论】:
我使用 Cloudera Impala 驱动程序完成了这项工作,该驱动程序具有完全相同的 JAR 依赖项,因此它应该以完全相同的方式工作。应该。诀窍是,DBVis 可能期望 Hive 驱动程序是 Apache Hive 驱动程序,具有不同的类名和不同的 JAR 依赖项。我建议您 (a) 将 Cloudera JAR 移动到另一个目录中,超出 auto-load-drivers-for-jerks 功能的范围,该功能在每次启动时都需要时间; (b) 在 [Tools][Driver Manager] 中手动设置 Hive 驱动程序 我尝试通过“工具 -> 驱动程序管理器”手动设置驱动程序。在此之后,我选择基于数据库 URL 的连接并选择我的新驱动程序和 URLjdbc:hive2://foo:10000/bar
。我选择 admin / admin 作为用户名密码。 ping 成功。但是当我尝试连接时,它说An error occurred while establishing the connection: The selected Driver cannot handle the specified Database URL. The most common reason for this error is that the database URL contains a syntax error preventing the driver from accepting it. The error also occurs when trying to connect to a database
我尝试了 impala 和 hive 驱动程序。
尝试使用 apache 驱动程序并得到错误Type: java.lang.reflect.UndeclaredThrowableException
你的解决方案其实就是这个指导(github.com/cyanfr/dbvis_to_hortonworks_hiveserver2/wiki/…),是官网推荐的。无论如何,它的工作原理是“获得正确的 jar 文件”。
【参考方案1】:
经过几个小时的故障排除。我能够解决错误并使用 cloudera 的 HIVE JDBC 驱动程序从 DB Visualizer 成功连接到 HIVE。
这些是我采取的步骤
-
首先转到工具 -> 工具属性 -> 驱动程序查找器路径。
在这里注册一个新的空目录。这将是您下载所有 jar 包的地方。
-
首先在此目录中提取 cloudera JDBC Hive 驱动程序附带的所有 JAR 文件。
http://www.cloudera.com/downloads/connectors/hive/jdbc/2-5-4.html
现在转到工具 -> 驱动程序管理器并选择 Hive。在“用户指定”选项卡中。单击右侧的“文件夹图标”,然后选择您刚刚解压缩的所有 jar 文件。 (不仅仅是文件夹......选择所有罐子)。
确保选择com.cloudera.hive.jdbc41.HS2Driver
现在使用这些参数定义与 Hive 的连接
url: jdbc:hive2://foo:10000/default 用户:管理员 密码:管理员
现在,当我尝试连接时,仍然出现错误。
“类型:java.lang.reflect.UndeclaredThrowableException”
为了解决上述问题,我需要查看错误日志。 (这是最重要的一步)。
工具 -> 调试窗口 -> 错误日志
在这里我看到神秘的“UndeclaredThrowableException”正在发生,因为丢失了一堆类文件,如 http utils、http core、hadoop core、hive core 和 hive cli jar 文件。我从 maven Central 下载了这些 jars
hadoop-core-0.20.2.jar hive-exec-2.0.0.jar hive-service-1.1.1.jar httpclient-4.5.2.jar httpcore-4.4.4.jar我再次进入 Tools->DriverManager -> Hive -> 用户定义并单击右侧的文件夹并选择了这些 jar 中的每一个。
现在,当我重新启动 DBVisualizer 时,我可以正常连接到 hive,并且可以使用 DBVisualizer 查询它。
【讨论】:
呃。 “hadoop-core”和“hive-blahblah”deps 的组合通常需要访问 Metastore API。应该被hive_metastore.jar
覆盖。以及为什么要使用“http”的东西——除非您的 HS2 服务使用的是 HTTP 协议而不是默认协议(二进制 Thrift)??
顺便说一句,混合 Hadoop 0.20、Hive 1.1 和 Hive 2.0 的组件有点尴尬——从实际的 Hadoop 集群(例如 Hadoop 2.7 和 Hive 1.2)获取 JAR 会更安全跨度>
以上是关于DBVisualizer 和 HIVE的主要内容,如果未能解决你的问题,请参考以下文章
用dbvisualizer 怎么连接 MS SQL Server
DBVisualizer 和 SnappyData 的数据库配置文件?