Sparksql saveAsTable调用错误的hdfs端口

时间:2016-09-20 11:42:09

标签: hadoop apache-spark apache-spark-sql

我配置了hadoop集群,其中包含hadoop 2.6.3,spark 2.0.0(之前为1.6.1),hive 2.0;

最近,我更改了hadoop端口规范。 核心站点文件中的 fs.defaultFS 是一个重大变化。 我从

改变了这个属性
hdfs://10.104.90.40:9000    

hdfs://10.104.90.40:8020

之后我重申了hadoop。 现在我想用SparkSql用代码编写一个表来配置hive:

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

但是,它始终失败并出现以下错误:

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

回到之前,当我使用spark 1.6.1(已经将fs.defaultFS端口更改为8020)时,运行saveAsTable命令时会弹出这个相同的内容。 很明显,尝试连接到不再使用的端口会导致错误。

我尝试了以下命令来查找是否忘记更改某些设置,只是发现没有配置文件包含“9000”的内容

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

其他一切正常,下面的命令或代码都可以正常工作

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 个答案:

答案 0 :(得分:1)

您是否尝试过重启hive Metastore,

sudo service hive-metastore restart