最近用了一下pyspark相关的API,感觉上手还是很简单的,但是纸上谈兵终究如浮云,真正实操的时候还是错误百出,下面记录两个踩过的坑,仅供新手参考,大佬可略过。
1. spark-submit
相信你应该会遇到下面这个问题:
Exception in thread "main" org.apache.spark.SparkException: Application application_1591080725627_2156881 finished with failed status
at org.apache.spark.deploy.yarn.Client.run(Client.scala:1165)
at org.apache.spark.deploy.yarn.YarnClusterApplication.start(Client.scala:1520)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:879)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:197)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:227)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:136)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
仔细检查-- deploy-mode 的参数设置,是client还是cluster。client模式下可以调试,所以会报语法或者相关的详细错误,cluster模式是在集群状态下跑,所以尽量在client的模式下调通之后再放在集群上跑。
2. 检查hadoop hdfs的路径
hadoop规定写入文件的时候不允许有重名文件,所以检查一下输出文件的hdfs路径是否已经存在。
3. 检查linux权限组是否排异
A具有代码的访问权限,B具有hdfs的访问权限,以A权限运行脚本代码写入B权限下的hdfs,也是写不成功的。