相关疑难解决方法(0)

无法从Eclipse建立与Hive的JDBC连接

我正在尝试与Hive建立JDBC连接,以便我可以查看和创建表并从Eclipse查询Hive表.我使用了HiveClient示例代码:https://cwiki.apache.org/confluence/display/Hive/HiveClient 然后我将所有必需的jar添加到eclipse中的java构建路径并启动了Hive Thrift Server.端口10000正在侦听.我正在使用Cloudera QuickstartVM 4.6.1及其附带的eclipse.这是我尝试运行代码时在IDE中出现的错误.

Exception in thread "main" java.sql.SQLException: org.apache.thrift.transport.TTransportException: java.net.SocketException: Connection reset
    at org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:191)
    at org.apache.hadoop.hive.jdbc.HiveStatement.execute(HiveStatement.java:127)
    at org.apache.hadoop.hive.jdbc.HiveConnection.configureConnection(HiveConnection.java:108)
    at org.apache.hadoop.hive.jdbc.HiveConnection.<init>(HiveConnection.java:103)
    at org.apache.hadoop.hive.jdbc.HiveDriver.connect(HiveDriver.java:104)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at jdbc.Hive.main(Hive.java:24)
Run Code Online (Sandbox Code Playgroud)

当我尝试使用beeline连接到Hive时,我得到了同样的错误.但是,当我从!connect命令中删除主机名和端口时,它会处理以下错误:

beeline> !connect jdbc:hive:// "" ""                 
scan complete in 4ms
Connecting to jdbc:hive://
14/03/21 18:42:03 WARN conf.HiveConf: DEPRECATED: Configuration property hive.metastore.local no longer has any effect. Make sure to provide a valid value for hive.metastore.uris if you are connecting to a remote metastore.
14/03/21 18:42:03 INFO metastore.HiveMetaStore: …
Run Code Online (Sandbox Code Playgroud)

java hadoop hive jdbc cloudera

7
推荐指数
1
解决办法
3万
查看次数

通过JDBC连接到远程Mapr Hive

这个问题类似,但不一样,因为Hive JDBC getConnection没有返回.然而,这是一个远程连接.此时,Metastore存在于启动hiveserver2的目录中.

我们在远程计算机上有一个正在运行的映射器集群.我想使用Java JDBC连接到此集群上的Hive.

因此我们启动了配置单元服务器:

/opt/mapr/hive/hive-0.11/bin/hiveserver2

服务器进程的输出不包含任何错误消息.它监听netstat报告的端口10000.

我尝试按照https://cwiki.apache.org/confluence/display/Hive/HiveClient中的描述连接到服务器,从而用运行hiveserver2的服务器名称替换localhost:

Connection con = 
  DriverManager.getConnection("jdbc:hive://myserver.example.com:10000/default", "", "");
Run Code Online (Sandbox Code Playgroud)

然而,该计划完全依赖于这一声明.它似乎没有连接.

可能我需要提供用户名和密码?

最初我使用过驱动程序org.apache.hadoop.hive.jdbc.HiveDriver.

但是,如果hive2服务器正在运行,我似乎应该使用驱动程序org.apache.hive.jdbc.HiveDriver.现在我得到以下例外:

Exception in thread "main" java.sql.SQLException: Could not establish connection to jdbc:hive2://myserver.example.com:10000/default: Required field 'client_protocol' is unset! Struct:TOpenSessionReq(client_protocol:null)
at org.apache.hive.jdbc.HiveConnection.openSession(HiveConnection.java:246)
at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:132)
at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at HiveJdbcClient.main(HiveJdbcClient.java:22)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: org.apache.thrift.TApplicationException: Required field 'client_protocol' is unset! Struct:TOpenSessionReq(client_protocol:null)
at org.apache.thrift.TApplicationException.read(TApplicationException.java:108)
at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:71)
at org.apache.hive.service.cli.thrift.TCLIService$Client.recv_OpenSession(TCLIService.java:144)
at org.apache.hive.service.cli.thrift.TCLIService$Client.OpenSession(TCLIService.java:131) …
Run Code Online (Sandbox Code Playgroud)

java hadoop hive jdbc mapr

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

hadoop ×2

hive ×2

java ×2

jdbc ×2

cloudera ×1

mapr ×1