1.搭建好StandarOne之后,写了一个例子,将jar包上传到节点上去,运行任务
19/11/26 14:52:50 ERROR TaskSetManager: Task 1 in stage 0.0 failed 4 times; aborting job
Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 0.0 failed 4 times, most recent failure: Lost task 1.3 in stage 0.0 (TID 7, 10.00.00.00, executor 1): java.lang.ClassNotFoundException: kk$$anonfun$1
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
出现找不到类的问题。
使用spark-submit的时候制定了jar包路径 spark-submit 。。。。 /root/spark/examples/jars/kk.jar
网上找了之后 用这个方式解决,代码里sc增加jar
sc.addJar("/root/spark/examples/jars/kk.jar")
或者在spark-submit的时候 使用 --jars /root/spark/examples/jars/kk.jar
eg: spark-submit --class org.apache.spark.examples.SparkPi --master spark://aaa:7077 --driver-memory 800M --executor-memory 600M --jars ../examples/jars/spark-examples_2.11-2.4.3.jar ../examples/jars/spark-examples_2.11-2.4.3.jar 10
2.spark会依赖到一些第三方的包,那么执行的时候就需要在每个节点上都上传这些jar包,这样肯定不方便。今天看到一个说使用gradle可以解决这种问题。
谷歌翻译:Shadow是Gradle插件,用于将依赖项类和资源与项目组合到单个输出Jar中。合并的Jar通常被称为胖jar或超级jar。Shadow利用JarInputStream和JarOutputStream将依赖的库有效地处理到输出jar中,而不会产生将jar扩展到磁盘的I / O开销。
https://imperceptiblethoughts.com/shadow/introduction/
怎么使用还不会。。。。。