问题一
[root@hadoop1 conf]# hive
接下来出现:
java.net.ConnectException: 拒绝连接 (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.apache.thrift.transport.TSocket.open(TSocket.java:221)
... 31 more
解决:经过百度,很多方法,最终,我把hive-site.xml中的hostname全部用ip地址代替,解决。
还有说直接将hive-site.xml配置文件中,hive.metastore.uris的值设置为空
<name>
hive.metastore.uris
</name>
<value>
thrift://192.168.6.77:9083
</value>
value值设置为空,好像也可以
问题二:
第一次启动hive,直接在命令行输入hive,出现
MetaException(message:Hive metastore database is not initialized. Please use schematool
(e.g. ./schematool -initSchema -dbType …) to create the schema. If needed, don’t forget to
include the option to auto-create the underlying database in your JDBC connection string (e.g.
?createDatabaseIfNotExist=true for mysql))
解决:
这是由于没有初始化数据库,生成元数据。 需要执行以下指令(在hive的bin目录下执行)
./schematool -initSchema -dbType mysql
最后一个参数为hive存放元数据所使用的数据库,我用的是mysql。如果使用derby,将最后的参数改为derby就可以了
可以用
schematool -dbType mysql -info
查看初始化后信息,如图:
注意点
1.需要把mysql的驱动包(jar包)copy到目录 <HIVE_HOME>/lib 中,
下载地址:https://dev.mysql.com/downloads/connector/j/
jar包的版本都可以,不是大问题
接下来可以查看,mysql数据库中查看是否有数据了
ps:mysql存储的数据表的元数据,hive是数据仓库引擎,本身并不存储数据,数据还是存储在hdfs上