2016-09-20 96 views
2

我配置了一个hadoop集群,其中包含hadoop 2.6.3,spark 2.0.0(以前是1.6.1),hive 2.0;Sparksql saveAsTable调用错误的hdfs端口

最近,我改变了hadoop端口规范。 一个主要变化是在core-site.xml中的fs.defaultFS。 我改变了这种财产

hdfs://10.104.90.40:9000  

hdfs://10.104.90.40:8020 

之后,我重申的Hadoop。 现在我想写一个表来配置单元SparkSql与代码:之前

py4j.protocol.Py4JJavaError: An error occurred while calling o405.saveAsTable. 
: java.net.ConnectException: Call From namenode01-bi-dev/10.104.90.40 to 
namenode01-bi-dev:9000 failed on connection exception: 
java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused 

返回时,我是火花1.6.1(:

df=sqlContext.sql('select * from vehicle') 
df.take(1)    //this can show the content correctly 
df.write.saveAsTable('try') 

然而,它总是失败,出现以下错误已经将fs.defaultFS端口改为8020),当我运行saveAsTable命令时,会弹出完全相同的结果。 很明显,尝试连接到不再使用的端口的错误结果。

我tryied以下命令来查找自己是否忘了更改一些设置,才发现没有配置文件包含“9000”

grep -rnw '/usr/local/' -e "9000" 

其他一切工作正常含量的folloing命令或代码都可以工作正常

hadoop fs -put/get 
hdfs getconf -confKey fs.defaultFS //the outout is hdfs://10.104.90.40:8020 
//within pyspark-shell 
ff=sc.textFile("somefile") 
ff.saveAsTextFile("/ll") 

对于我来说saveAsTable将调用9000端口没有任何意义。

回答

1

您是否尝试过重新启动蜂巢metastore,

sudo service hive-metastore restart 
+0

同样的错误remian重启蜂巢metastore –

+0

好后。 通过输入 '$ HIVE_HOME/bin'查看FS中的位置。 'metatool -listFSRoot' 如果显示旧路径更新它 –

+0

这实际上解决了问题。 listFSRoot确实会返回旧的hdfs端口。更新位置后。错误消失了,我可以成功写入配置单元。谢谢 ! –