maven安装及搭建

1.maven安装及搭建 (参照word文档搭建)
a.下载maven3.3.9版本。解压至D,将m2放到解压后的路径中
b.配置本地仓库
修改{Maven_HOME}/conf/settings.xml
添加以下内容(本地仓库位置最好不要放在C盘,因为我们需要在线下载jar包):
D:\Maven-3.3.9\m2\repository
c.IDEA配置Maven
【Setting】–>【Build,Execution,Deployment】–>【Build Tools】–> 【Maven】
修改【Maven home directory】 = “D:\Maven-3.3.9”
【Users setting file】 = “D:\Maven-3.3.9\conf\settings.xml”
【local repository】 = “D:\Maven-3.3.9\m2\repository”
d.基于Maven构建Scala工程 File–>new -->Project/Modules 选择Maven
指定groupId=com.crx //说明:设置Maven库中所在的组
指定artifactId = scala //说明:设置唯一标识
指定version = 1.0.0 //说明:设置版本号

d.src -> new Director,标记为source

f.File->Modules-> Dependencies ->选择Maven scala或scala-sdk-2.11.8


http://mvnrepository.com  

搜索:scala
点击:Scala Library  -->  2.11.8

pom.xml 增加内容(改为2.11.9  查看路径下,下载版本D:\Maven-3.3.9\m2\repository\org\scala-lang\scala-library)
<dependencies> 
 <dependency>
	 <groupId>org.scala-lang</groupId>
	 <artifactId>scala-library</artifactId>
	 <version>2.11.8</version>
 </dependency> 
</dependencies>

刷新后,会出来Dependencies
下载源码包:Maven Project->Dependencies->右键Downlod Source

到manven下找到2.11.8

Lifecycle -->   mvn compile 编译源代码
				mvn deploy 发布项目
				mvn test-compile 编译测试源代码
				mvn test 运行应用程序中的单元测试
				mvn site 生成项目相关信息的网站
				mvn clean 清除项目目录中的生成结果
				mvn package 根据项目生成的jar
				mvn install 在本地Repository中安装jar

1.构建独立应用,采用Maven搭建Spark应用程序
   a. 1.新建spark的project项目构建maven项目
      2.本地仓库seting修改 右边compile (每次创建 项目本地仓库都需要修改)
      3.File -->Project Structure..选择+ -->lib 选scala -->Dependences 勾选scala-sdk-2.11.8
      4.https://mvnrepository.com/search?q=spark 
		Spark Project Core
      5.加载spark-core_2.11依赖库 -->Import Changes -->2.1.2:
      <dependencies>
		<dependency>
			<groupId>org.apache.spark</groupId>
			<artifactId>spark-core_2.11</artifactId>
			<version>2.1.2</version>
		</dependency>
	  </dependecies>
   注意:spark-core_{版本号},版本号应为scala的对应版本
         version为spark 2.1.2

   6.创建spark文件 标记为源码包
		 main -->新建文件夹 (sparkTest) -->右键Mark Directory as  -->Resources Root
   b.编写spark Driver端程序
      1).创建SparkConf对象,并指定集群模式和AppName;
	  2).创建SparkContext对象,生成sc
	  3).创建RDD
	  4).针对业务需求,编写相应的RDD操作



创建sc对象两种方式
1)spark shell: 直接可以用sc对象

2)javaAPI:先创建SparkConf,再通过SparkConf创建SparkContext

val conf = new SparkConf().setMaster("local").setAppName("wordcount")
val sc = new SparkContext(conf)



sc创建RDD3种方式 
1)由外部存储系统的数据集创建,包括本地的文件系统,还有所有Hadoop支持的数据集,比如HDFS、Cassandra、HBase等
rdd2 = sc.textFile("hdfs://slave1:9000/words.txt")


2)由一个已经存在的集合创建。
rdd1 = sc.parallelize(Array(1,2,3,4,5,6,7,8))

3)由一个已经存在的集合创建makeRDD
rdd3 = sc.makeRDD(Array(1,2,3,4,5,6,7,8)) 


例1:  
	import org.apache.spark.{SparkConf,SparkContext}
		object WordCount {
			def main(args: Array[String]): Unit = {
            //构建Spark的conf对象,并通过setMaster方法设置集群模式运行的方式{“本地”},通过setAppName方法指定应用名字
            val conf = new SparkConf().setMaster("local").setAppName("ListTest")
            val sc = new SparkContext(conf); 
            val rdd = sc.parallelize(List(1,3,5,2,56))
            println(rdd.count())
           }
        }
 例2:
	import org.apache.spark.{SparkConf,SparkContext}
	object WordCount {
	  def main(args: Array[String]): Unit = {
		//构建Spark的conf对象,并通过setMaster方法设置集群模式运行的方式{“本地”},通过setAppName方法指定应用名字
		val conf = new SparkConf().setMaster("local").setAppName("wordcount")
		val sc = new  SparkContext(conf);
		val rdd = sc.textFile("file:///E:/inputwordcount")
		//1.统计rdd的行数
		println(rdd.count()) 
	  }
	}

2.WordCount案例
  object WordCount {
  def main(args: Array[String]): Unit = {
    //构建Spark的conf对象,并通过setMaster方法设置集群模式运行的方式{“本地”},通过setAppName方法指定应用名字
    val conf = new SparkConf().setMaster("local").setAppName("wordcount")
    val sc = new  SparkContext(conf);
    val rdd = sc.textFile("file:///D:/测试数据/spark_wordcount.txt")
	
	//中间结果保存
//    val rdd1 = rdd.flatMap(x=> x.split(" "))
//    val rdd2 = rdd1.map(x=>(x,1))
//    val rdd3 = rdd2.reduceByKey((x,y)=>x+y)
	  //saveAsTextFile是无返回值类型的,所以不用接收返回类型
//    rdd3.saveAsTextFile("file:///D:/测试数据/spark_wordcount_res")


	//1)收集rdd数据到当前节点再转为list打印输出,即将磁盘的数据输出到控制台
    println(rdd.collect().toList)
	
    rdd.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("file:///E:/spark_wordcount_res0")
	
	
	//2)用foreach实现
    rdd2.collect().toList.foreach(println(_))
  }
  
  
  
  

总结mapreduce和spark的区别: 
mapreduce运行wordcount例子里map和reduce中间结果不保留  
spark可以保存中间结果 rdd3可以save,rdd2也可以save,所有的中间结果都可以保存起来


对应的 SQL 查询语句会是这样:
SELECT word, COUNT(*) as count FROM raw_words GROUP BY word;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值