Rhive:消息显示:未连接到 Hiveserver2(但可以连接 HDFS)
Rhive: The messages shows: Not Connected to Hiveserver2 (But can connect HDFS)
我一直在尝试使用 RHive 连接 R 和 Hive,所需的包(Rhive、rJava、Rserve)都已安装并设置了环境变量。在 R 中,我正在尝试以下操作,不确定连接 hiveserver 失败的原因是什么,谢谢:
开始R
>R
加载 Rhive 包
>库(RHive)
设置环境变量
> Sys.setenv(HIVE_HOME="/usr/local/apache-hive-0.14.0-bin")
> Sys.setenv(HADOOP_HOME="/usr/local/hadoop-2.5.1")
初始化数据库
>rhive.init()
检查环境变量
>rhive.env()
hadoop home: /usr/local/hadoop-2.5.1
fs: file:///
hive home: /usr/local/apache-hive-0.14.0-bin
user name: hadoop
user home: /home/hadoop
temp dir: /tmp/hadoop>**
建立联系
>rhive.connect()
错误:
2015-06-10 15:19:48,060 INFO jdbc.Utils (Utils.java:parseURL(285)) - Supplied authorities: 127.0.0.1:10000
2015-06-10 15:19:48,060 INFO jdbc.Utils (Utils.java:parseURL(372)) - Resolved authority: 127.0.0.1:10000
2015-06-10 15:19:48,061 INFO jdbc.HiveConnection (HiveConnection.java:openTransport(189)) - Will try to open client transport with JDBC Uri: jdbc:hive2://127.0.0.1:10000/default
2015-06-10 15:19:48,061 INFO jdbc.HiveConnection (HiveConnection.java:openTransport(194)) - Could not open client transport with JDBC Uri: jdbc:hive2://127.0.0.1:10000/default
Exception in thread "Thread-39" java.lang.RuntimeException: java.sql.SQLException: Could not open client transport with JDBC Uri: jdbc:hive2://127.0.0.1:10000/default: java.net.ConnectException: Connection refused
at com.nexr.rhive.hive.HiveJdbcClient$HiveJdbcConnector.connect(HiveJdbcClient.java:337)
at com.nexr.rhive.hive.HiveJdbcClient$HiveJdbcConnector.run(HiveJdbcClient.java:322)
Caused by: java.sql.SQLException: Could not open client transport with JDBC Uri: jdbc:hive2://127.0.0.1:10000/default: java.net.ConnectException: Connection refused
at org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:215)
at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:163)
at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at com.nexr.rhive.hive.DatabaseConnection.connect(DatabaseConnection.java:51)
at com.nexr.rhive.hive.HiveJdbcClient$HiveJdbcConnector.connect(HiveJdbcClient.java:330)
... 1 more
Caused by: org.apache.thrift.transport.TTransportException: java.net.ConnectException: Connection refused
at org.apache.thrift.transport.TSocket.open(TSocket.java:185)
at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:248)
at org.apache.thrift.transport.TSaslClientTransport.open(TSaslClientTransport.java:37)
at org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:190)
... 7 more
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at org.apache.thrift.transport.TSocket.open(TSocket.java:180)
... 10 more
Error: java.lang.IllegalStateException: Not connected to hiveserver
我解决了连接到 "hivevserver" 而不是 "hivesever2" 的连接问题,而且效果很好;代码如下,希望有遇到同样问题的朋友可以参考一下:
>R
>Sys.setenv(HIVE_HOME="/usr/local/apache-hive-0.14.0-bin")
>Sys.setenv(HADOOP_HOME="/usr/local/hadoop-2.5.1")
>library(RHive)
>rhive.init
(
hiveLib="/usr/local/apache-hive-0.14.0-bin",
hadoopConf="/usr/local/hadoop-2.5.1/etc/hadoop",
hadoopLib="/usr/local/hadoop-2.5.1/lib",verbose=FALSE
)
>rhive.connect("172.22.25.162",hiveServer2=FALSE,defaultFS="hdfs://master:9000")
>tables_overview<-rhive.query("show tables")
>View(tables_overview)
我一直在尝试使用 RHive 连接 R 和 Hive,所需的包(Rhive、rJava、Rserve)都已安装并设置了环境变量。在 R 中,我正在尝试以下操作,不确定连接 hiveserver 失败的原因是什么,谢谢:
开始R
>R
加载 Rhive 包
>库(RHive)
设置环境变量
> Sys.setenv(HIVE_HOME="/usr/local/apache-hive-0.14.0-bin")
> Sys.setenv(HADOOP_HOME="/usr/local/hadoop-2.5.1")
初始化数据库
>rhive.init()
检查环境变量
>rhive.env()
hadoop home: /usr/local/hadoop-2.5.1
fs: file:///
hive home: /usr/local/apache-hive-0.14.0-bin
user name: hadoop
user home: /home/hadoop
temp dir: /tmp/hadoop>**
建立联系
>rhive.connect()
错误:
2015-06-10 15:19:48,060 INFO jdbc.Utils (Utils.java:parseURL(285)) - Supplied authorities: 127.0.0.1:10000
2015-06-10 15:19:48,060 INFO jdbc.Utils (Utils.java:parseURL(372)) - Resolved authority: 127.0.0.1:10000
2015-06-10 15:19:48,061 INFO jdbc.HiveConnection (HiveConnection.java:openTransport(189)) - Will try to open client transport with JDBC Uri: jdbc:hive2://127.0.0.1:10000/default
2015-06-10 15:19:48,061 INFO jdbc.HiveConnection (HiveConnection.java:openTransport(194)) - Could not open client transport with JDBC Uri: jdbc:hive2://127.0.0.1:10000/default
Exception in thread "Thread-39" java.lang.RuntimeException: java.sql.SQLException: Could not open client transport with JDBC Uri: jdbc:hive2://127.0.0.1:10000/default: java.net.ConnectException: Connection refused
at com.nexr.rhive.hive.HiveJdbcClient$HiveJdbcConnector.connect(HiveJdbcClient.java:337)
at com.nexr.rhive.hive.HiveJdbcClient$HiveJdbcConnector.run(HiveJdbcClient.java:322)
Caused by: java.sql.SQLException: Could not open client transport with JDBC Uri: jdbc:hive2://127.0.0.1:10000/default: java.net.ConnectException: Connection refused
at org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:215)
at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:163)
at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at com.nexr.rhive.hive.DatabaseConnection.connect(DatabaseConnection.java:51)
at com.nexr.rhive.hive.HiveJdbcClient$HiveJdbcConnector.connect(HiveJdbcClient.java:330)
... 1 more
Caused by: org.apache.thrift.transport.TTransportException: java.net.ConnectException: Connection refused
at org.apache.thrift.transport.TSocket.open(TSocket.java:185)
at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:248)
at org.apache.thrift.transport.TSaslClientTransport.open(TSaslClientTransport.java:37)
at org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:190)
... 7 more
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at org.apache.thrift.transport.TSocket.open(TSocket.java:180)
... 10 more
Error: java.lang.IllegalStateException: Not connected to hiveserver
我解决了连接到 "hivevserver" 而不是 "hivesever2" 的连接问题,而且效果很好;代码如下,希望有遇到同样问题的朋友可以参考一下:
>R
>Sys.setenv(HIVE_HOME="/usr/local/apache-hive-0.14.0-bin")
>Sys.setenv(HADOOP_HOME="/usr/local/hadoop-2.5.1")
>library(RHive)
>rhive.init
(
hiveLib="/usr/local/apache-hive-0.14.0-bin",
hadoopConf="/usr/local/hadoop-2.5.1/etc/hadoop",
hadoopLib="/usr/local/hadoop-2.5.1/lib",verbose=FALSE
)
>rhive.connect("172.22.25.162",hiveServer2=FALSE,defaultFS="hdfs://master:9000")
>tables_overview<-rhive.query("show tables")
>View(tables_overview)