此次job的提交,具体命令:
1.如果Spark集群没有连接mysql的驱动jar包的话:需要自行提供驱动jar包
spark-submit --master spark://hdp-21:7077 --jars /root/mysql-connector-java-8.0.11.jar --class cn.edu360.day06.IPAdd6 wc.jar hdfs://hdp-21:9000/uu/input/access.log hdfs://hdp-21:9000/uu/input/ip.txt
2.长久之间,建议写个shell把mysql的驱动包加入到Spark集群的每一台节点。加入到Spark的jars目录下。如是,命令:
[root@hdp-21 ~]# spark-submit --master spark://hdp-21:7077 --class cn.edu360.day06.IPAdd6 wc.jar hdfs://hdp-21:9000/uu/input/access.log hdfs://hdp-21:9000/uu/input/ip.txt
如上,我两种方式我都测试了。但是过程中遇到的问题在Spark集群的web UI控制台上发现了严重的报错,如下:
java.sql.SQLException: null, message from server: "Host 'B3K9Q2RP9OJPKBG' is not allowed to connect to this MySQL server"
解决方案:
1、先用localhost方式连接到MySQL数据库,然后使用MySQL自带的数据库mysql;
use mysql;
2、执行:select host from user where user = 'root'; 发现host的值就是localhost。
所以将它的值改掉:update user set host='%' where user = 'root';
3、修改完成后,再执行:flush privileges;
再去跑自己的Job就没有问题了
如此,Spark集群运行结果存到本地数据库就没有什么问题了