在我电脑里面: Hadoop1.2.1中fs.default.name=hdfs://localhost:9000
Hadoop2.2.0中fs.default.name=hdfs://localhost:8020
所以 hdfs://localhost:9000/home/wyp/cloud/hive/warehouse/cite
其中、home/wyp/cloud/hive/warehouse/是配置文件设置的,如下:
hive.metastore.warehouse.dir
/home/wyp/cloud/hive/warehouse
location of default database for the warehouse
cite是表的名称。
如果在Hadoop1.2.1平台导入的数据,而在Hadoop2.2.0平台上面查询数据(注意,需要在Hadoop2.2.0平台上同样的位置上存在数据,这样才能查询到结构)将会出现下面的错误: hive> select * from cite;
OK
Failed with exception java.io.IOException:java.net.ConnectException:
Call From wyp/192.168.142.138 to localhost:9000 failed on connection
exception: java.net.ConnectException: Connection refused;
For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
Time taken: 4.519 seconds
从查询的结果看出,返回的是OK,但是显示数据出现了java.net.ConnectException异常,这就是上面所说的问题,因为你数据的路径为
hdfs://localhost:9000/home/wyp/cloud/hive/warehouse/cite
但是你在Hadoop2.2.0平台上查询,从最上面的配置我们可以看出,Hadoop2.2.0平台的hdfs的连接端口为8020,当然不能连上localhost:9000,我们需要连上8020端口。
解决方法:(1)、修改Hadoop2.2.0的fs.default.name=hdfs://localhost:9000,然后重起Hadoop服务。
(2)、进入Mysql数据库,找到SDS表格:
从上面的查询结果我们可以看出,SD_ID为1对应的表格数据存放在hdfs://localhost:9000/home/wyp/cloud/hive/warehouse/cite路径,我需要修改端口号9000为8020。如下:
然后再查询数据: hive> select * from cite;
OK
121
25
65
36
Time taken: 0.509 seconds, Fetched: 4 row(s)
终于见到熟悉的数据了!推荐使用方法一。