Spark 是用Scala代碼寫的。為了調試Spark,做了如下嘗試。
1、Eclipse下:Java 項目 ,Using Maven,編寫了一個java 版Spark應用。 Spark的代碼(scala代碼可以調試,但是查看變量極不方便,不忍直視,畢竟調試器時Java的,但代碼是scala生成的字節碼,還是有出入的)。
2、Scala IDE下:Scala 項目,Using Maven,編寫一個Scala版的Spark應用。
報找不到類的異常。解決該問題的方法是:http://scala-ide.org/docs/tutorials/m2eclipse/index.html
簡單點說:
第一步:升級Maven插件
因為Scala IDE本事就是一個有Scala插件、Maven插件的Eclipse。但是內置的Maven插件只能創建Java項目,不能創建Scala項目。所以要更新Maven插件。
第二步:創建Maven項目時,選擇scala的archetypes。
但是因為Scala IDE下載相關插件,速度實在是不敢恭維,就此作罷。
3、Scala IDE下:Java 項目,Using Maven,編寫Scala 版的Spark應用。
在pom.xml中配置 scala編譯器,以使使用Maven構建時,會使用Scala相關的編譯器對Scala代碼進行編譯,生成字節碼。
這樣一來,就可以使用Scala調試器進行調試了。
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <groupId>com.fjn.helper</groupId> <version>0.0.1-SNAPSHOT</version> <artifactId>frameworkex-apache-spark</artifactId> <name>frameworkex-apache-spark</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.10</artifactId> <version>2.0.2</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming_2.10</artifactId> <version>2.0.2</version> </dependency> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.10.6</version> </dependency> </dependencies> <build> <plugins> <!-- This plugin compiles Scala files --> <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <executions> <execution> <id>scala-compile-first</id> <phase>process-resources</phase> <goals> <goal>add-source</goal> <goal>compile</goal> </goals> </execution> <execution> <id>scala-test-compile</id> <phase>process-test-resources</phase> <goals> <goal>testCompile</goal> </goals> </execution> </executions> </plugin> <!-- This plugin compiles Java files --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> <executions> <execution> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> </executions> </plugin> <!-- This plugin adds all dependencies to JAR file during 'package' command. Pay EXTRA attention to the 'mainClass' tag. You have to set name of class with entry point to program ('main' method) --> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.5.3</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>sparkTest1</mainClass> </manifest> </archive> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>