第一次接触maven,经历了好多波折最后才运行陈功了一个小程序,先将尝试过程分享,希望对遇到相似问题的小伙伴有帮助。
首先配置好intliji idea的基本环境,然后开始。
依据网上的教程(这篇教程百度全都是)开始,根据maven模板创建程序,
创建一个程序,然后接着修改里边的scala版本,添加spark的信息
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.10 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.6.1</version>
</dependency>
然后自动下载,接下来写一段程序,就这一段好了
import org.apache.spark.{SparkConf, SparkContext}
object HelloScala {
def main(args: Array[String]){
System.out.println("hello scala!")
val conf= new SparkConf().setAppName("windows_spark").setMaster("local[4]").set("spark.testing.memory","2147480000")
val spark =new SparkContext(conf)
val data= spark.textFile("data.txt")
val ss=data.flatMap(_.split("a")).map((_,1)).reduceByKey((_+_)).repartition(1)
ss.foreach(println)
spark.stop()
}
}
数据文件data可以使用这一段代码,直接放在项目的根目录就好了。
到这里,我发现,并不能运行。
有一个小问题先交代一下,首先加载那些包是需要一点时间的,尤其是网速不快的情况下
还有就是模板里边有些东西是不能识别的,貌似是maven scala插件之类的,后来也不知道怎么就好了。
在尝试运行的时候,是会出错的,
运行Maven是报错:No goals have been specified for this build
http://blog.csdn.net/yiluoak_47/article/details/16940303
然后按照上边网页添加进去,
- pom.xml文件<build>标签后面加上<defaultGoal>compile</defaultGoal>即可
,然后,运行这时候,可以运行完了,but,我就蒙圈了,每次运行完了就说build成功了,我的天啊,为什么不能运行,于是我右键运行,发现出现了坑爹的版本问题,
就是下面这个图
然后,我继续百度,找到了这篇文章,
用idea编译项目出现JUnit4 版本问题
http://wenda.chinahadoop.cn/question/2642(小象学院的问答区)前边的好多复杂的东西我也没看太懂,最后一句我懂了,没有用那个模板,重新建了个maven项目,然后成功了。
于是我也跟着他学吧,创建了一个。
然后添加spark的版本信息,添加build中的这一段<defaultGoal>compile</defaultGoal>,然后,运行,这个时候竟然还有问题,说是找不到主类,我开始怀疑我在建文件的时候选择没有scala类可选,我就选了文件,生生的改成了scala,再加上这篇文章说的,http://*.com/questions/27871379/exception-in-thread-main-java-lang-classnotfoundexception 我就决定再建一个,因为这个时候我已经添加了scala的jdk,(原来我以为maven会帮我搞定,应该就是这样的,不过现在不是,嗯,你可以帮我回答一这个问题)
终于成功了
看我两个文件一样,ide还是认为不一样,创建的时候就决定了文件的类型
最后,给出pom的代码,虽然我不太理解,但是可以运行,先这样的
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>selfmaven</groupId>
<artifactId>mavenXXXXX</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.10 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
<build>
<defaultGoal>compile</defaultGoal>
</build>
</project>