SpaekSQL操作创建表报错faied connection localhost 9000

(1)这个报错的原因很简单,就是连接不上hdfs的localhost 9000(NN),那么需要分析问题出在哪了,

spark-sql,我这个是操做hive的,所以我们看看hive的配置文件有问题吗,一看该有的都没有,没问题,是不是没拷贝到spark conf下面呢,,看了拷贝了的。

(2)那么spark 基本没啥问题了,再想那还用的上hdfs呢?Hive的数据就是存储在hdfs之上,所以我们需要看看hdfs能用吗,

一看都能用没有问题,我们再看看core-site.xml文件里面有问题吗,这个时候我们在看看slaves,这个是datanobe的节点ip,进去一看是localhost,伪分布式,改成ip就好啊,以为是这出了问题,改过之后,再一次测试,还是有问题!

(3)上面证明了和hdfs没问题,在想想和hive还有关系的不就是mysql吗?

因为我们的元数据(就是表的各类信息)在这mysql中,于是我们想想,它那能用到hdfs localhost 9000呢?

这个时候就得回到hive的编译安装部署了,编译的时候呢,hive存储数据的配置信息呢(也就是HDFS的ip+端口号),配置信息属于元数据是存在mysql之上的!去mysql里面找一找,找个一张叫dbs的表,里面就是hdfs的配置信息,但是存的ip是localhost!而我的hdfs现在的是ip号!

(4)原来我是用localhost编译的,后来改成了IP,但是元数据存的内容就是你当初编译的,所以出了问题。

将这个表的数据修改成IP就可以了!  这算个坑。

<configuration>
	<property>
		<name>javax.jdo.option.ConnectionURL</name>
		<value>jdbc:mysql://192.168.137.251:3306/g3?createDatabaseIfNotExist=true</value>
	</property>
	
	<property>
		<name>javax.jdo.option.ConnectionDriverName</name>
		<value>com.mysql.jdbc.Driver</value>
	</property>

	<property>
		<name>javax.jdo.option.ConnectionUserName</name>
		<value>root</value>
	</property>

	<property>
		<name>javax.jdo.option.ConnectionPassword</name>
		<value>123456</value>
	</property>
</configuration>	

猜你喜欢

转载自blog.csdn.net/qq_42064119/article/details/82283864