如何在Spark源码中运行SparkExamples的例子程序
首先从github中将Spark的源码下载下来。
然后,对源码进行build
mvn -DskipTests clean package
build过程中会不断的下载必须的jar包,如果不能正确上网的话,会遇到各种的问题。
build完成后,运行例子程序时,出现无法找到spark-version-info.properties 文件。这是因为没有执行生成spark-version-info.properties文件
具体在core模块中的pom文件中
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>generate-resources</phase>
<configuration>
<!-- Execute the shell script to generate the spark build information. -->
<target>
<!-- 无法执行下列命令生成spark-version-info.properties 文件 -->
<exec executable="bash">
<arg value="${project.basedir}/../build/spark-build-info"/>
<arg value="${project.build.directory}/extra-resources"/>
<arg value="${project.version}"/>
</exec>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
此时我们可以自己手动运行命令生成spark-version-info.properties 文件
需要在bash中(或gitbash中)运行命令如下
转到spark文件夹下
build/spark-build-info core/target/extra-resources 3.1.0-SNAPSHOT
会在extra-resources 文件夹下生成spark-version-info.properties文件
其中点开project.version 为3.1.0-SNAPSHOT
Caused by: java.lang.ClassNotFoundException: org.apache.spark.sql.SparkSession$
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/sql/SparkSession$ at org.apache.spark.examples.sql.SQLDataSourceExample$.main(SQLDataSourceExample.scala:28) at org.apache.spark.examples.sql.SQLDataSourceExample.main(SQLDataSourceExample.scala) Caused by: java.lang.ClassNotFoundException: org.apache.spark.sql.SparkSession$ at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ... 2 more
报错原因:
pom文件中对sql jar包的scop范围写的是provided,即不提供此jar包
解决办法:
Exception in thread "main" org.apache.spark.SparkException: A master URL must be set in your configuration
解决办法:
在启动的时候增加虚拟机参数VM options
-Dspark.master=local