本文共 4619 字,大约阅读时间需要 15 分钟。
一直想搞清楚spark读取不同数据源时的分区是怎么决定的,趁着国庆有时间终于下决心来做这个事。关于这个分区数,很多说法,最后决定自己看下源码,也算是接触spark源码的第一步吧。挺多坑,零零散散花了2天多的时间,总算跑通spark源码里面的example了。mark一下。
(可能需要翻墙)
下载完,拷贝到自己想放的目录,双击即可解压得到项目文件夹。2.1、 先到刚刚解压出来的spark源码根目录,打开pom.xml文件看下maven和scala的版本,安装对应的版本。
2.2、安装好后,使用命令查看版本scala - 2.11.12
maven - 3.5.4
到这里编译前的准备工作就完成了maven的安装注意将源修改成阿里云的源,不然会慢到怀疑人生…
peterpan@PeterdeMBP ~ % cd Documents/work/projects/idea/spark-2.4.7peterpan@PeterdeMBP spark-2.4.7 % pwd/Users/peterpan/Documents/work/projects/idea/spark-2.4.7peterpan@PeterdeMBP spark-2.4.7 % mvn -T 4 -DskipTests clean packagepeterpan@PeterdeMBP spark-2.4.7 %peterpan@PeterdeMBP spark-2.4.7 %.........# after 30-60分钟...[INFO] [INFO] --- maven-source-plugin:3.0.1:jar-no-fork (create-source-jar) @ spark-examples_2.11 ---[INFO] Building jar: /Users/peterpan/Documents/work/projects/idea/spark-2.4.7/examples/target/spark-examples_2.11-2.4.7-sources.jar[INFO] [INFO] --- maven-source-plugin:3.0.1:test-jar-no-fork (create-source-jar) @ spark-examples_2.11 ---[INFO] Building jar: /Users/peterpan/Documents/work/projects/idea/spark-2.4.7/examples/target/spark-examples_2.11-2.4.7-test-sources.jar[INFO] ------------------------------------------------------------------------[INFO] Reactor Summary:[INFO] [INFO] Spark Project Parent POM 2.4.7 ..................... SUCCESS [ 2.603 s][INFO] Spark Project Tags ................................. SUCCESS [ 5.171 s][INFO] Spark Project Sketch ............................... SUCCESS [ 13.367 s][INFO] Spark Project Local DB ............................. SUCCESS [ 6.400 s][INFO] Spark Project Networking ........................... SUCCESS [ 10.813 s][INFO] Spark Project Shuffle Streaming Service ............ SUCCESS [ 6.643 s][INFO] Spark Project Unsafe ............................... SUCCESS [ 19.661 s][INFO] Spark Project Launcher ............................. SUCCESS [ 10.826 s][INFO] Spark Project Core ................................. SUCCESS [02:59 min][INFO] Spark Project ML Local Library ..................... SUCCESS [ 32.702 s][INFO] Spark Project GraphX ............................... SUCCESS [01:19 min][INFO] Spark Project Streaming ............................ SUCCESS [02:24 min][INFO] Spark Project Catalyst ............................. SUCCESS [04:15 min][INFO] Spark Project SQL .................................. SUCCESS [03:46 min][INFO] Spark Project ML Library ........................... SUCCESS [04:41 min][INFO] Spark Project Tools ................................ SUCCESS [ 5.573 s][INFO] Spark Project Hive ................................. SUCCESS [03:16 min][INFO] Spark Project REPL ................................. SUCCESS [ 29.623 s][INFO] Spark Project Assembly ............................. SUCCESS [ 5.777 s][INFO] Spark Integration for Kafka 0.10 ................... SUCCESS [ 52.390 s][INFO] Kafka 0.10+ Source for Structured Streaming ........ SUCCESS [01:44 min][INFO] Spark Project Examples ............................. SUCCESS [ 49.188 s][INFO] Spark Integration for Kafka 0.10 Assembly .......... SUCCESS [ 8.700 s][INFO] Spark Avro 2.4.7 ................................... SUCCESS [01:14 min][INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 17:01 min (Wall Clock)[INFO] Finished at: 2020-10-05T19:08:05+08:00[INFO] ------------------------------------------------------------------------peterpan@PeterdeMBP spark-2.4.7 %
4.1、编译完成后,导入idea,
【open or import】 >> {spark-2.4.7}/pom.xml >> Open as Project
5.1、将idea默认的maven改成上面安装的maven路径
【Preferences】 >> 【Build,Execution,Deployment】 >> 【Build Tools】 >> 【Maven】
5.2、设置一些执行参数
【Add Configuration】>> 【+】 >> 【Application 】
5.3、运行测试类【JavaWordCount】 && 报错
6.1、跟spark相关的【java.lang.ClassNotFoundException】,原因都是example module中pom.xml spark的依赖scope是provided。
粗暴的方法:
【<scope>provided</scope> 】替换为【<!–<scope>provided</scope>–>】
6.2、这个报错仍是example module 中 pom.xml provided的问题
hadoop.deps.scope 设置为compile
hive.deps.scope 设置为compile parquet.deps.scope 设置为compile ps. 设置为compile等同于注释掉scope,因为默认是compile
6.3、这个也是provide的问题,但不在example module。而是在根目录的pom.xml
将根目录中pom.xml的guava对应的scope设置为compile
6.4、这个也是provide的问题,但不在example module。而是在根目录的pom.xml
在根目录pom.xml 将 org.eclipse.jetty 对应的provided改为compile
6.5、报错跟scala相关的类 Not Found
【File】>> 【Project Structure】>> 【global libraries】 >> 【+】 >> 【选择scala版本】 >> 【右键】>> 【scala add to modules】>> 【spark-example_2.11】
6.6、成功跑通,后面
6.7、可以debug,后续就可以随意查看各段代码的值,离了解spark分区数又近了一步环境问题总是各种各样的坑,如果遇到其他报错,可以留言一起研究。
转载地址:http://julwb.baihongyu.com/