spark学习笔记【一】- 搭建spark开发环境【原创】

在去年写完[url="http://zhenggm.iteye.com/blog/2367614"]大数据学习笔记(七)-运行spark脚本【原创】[/url]之后,由于工作比较忙,且大数据在负责的项目中一时用不上,所以没有继续学习。
这一篇是新的开始,主要学习使用spark的进行开发。
spark的源码是scala写的,scala是与Java很像的一种语言,也是基于jvm运行的。spark提供了scala和java的开发包,因此可以使用java和scala来开发spark应用。
以下介绍开发环境搭建与demo的编写:
一)开发环境搭建
1)安装jdk1.8
2)到ScalaIDE官网下载集成好的eclipse
http://scala-ide.org/download/sdk.html
3) 解压下载好的包即可使用
至此,我们可以使用下载的eclipse集成环境开发java和scala版本的spark程序
二)java demo
1) 使用maven创建java工程,并添加依赖


4.0.0
cn.gov.zjport.demo
demo-spark
0.0.1-SNAPSHOT



org.apache.spark
spark-core_2.11
2.2.0



org.apache.spark
spark-launcher_2.11
2.2.0



org.apache.spark
spark-sql_2.11
2.2.0






2)java代码

package cn.gov.zjport.demo.spark;

import java.util.Arrays;
import java.util.List;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function2;

public class SparkLocalCollection {
public static void main(String[] args) {
//初始化
SparkConf conf=new SparkConf().setAppName("SparkLocalCollection").setMaster("local");
JavaSparkContext sparkContext=new JavaSparkContext(conf);

try{
List list=Arrays.asList(1,2,3,4,5,6,7,8,9,10);
//创建RDD
JavaRDD rdd=sparkContext.parallelize(list);
//执行reduce action操作
int sum=rdd.reduce(new Function2(){
private static final long serialVersionUID = 1L;

public Integer call(Integer arg0, Integer arg1) throws Exception {
return arg0+arg1;
}

});

System.out.println("add result:"+sum);
}finally{
sparkContext.close();
}
}
}



3)运行 run as -> Java Application
[img]http://dl2.iteye.com/upload/attachment/0130/4121/93a8d50a-ade3-323e-b849-a6e732c0fad7.png[/img]

三)scala demo
1)新建一个maven工程,并添加依赖


1.8
1.8
UTF-8
2.11.11
2.11
4.2.0




org.scala-lang
scala-library
${scala.version}



org.apache.spark
spark-core_2.11
2.3.0



org.apache.spark
spark-launcher_2.11
2.3.0



org.apache.spark
spark-sql_2.11
2.3.0




2)将工程改为scala工程
[img]http://dl2.iteye.com/upload/attachment/0130/4127/0bc6d9b7-ae25-399a-91b6-786736a93bd2.png[/img]

3)编写scala程序

package cn.gov.zjport.demo.spark

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext

object SparkLocalCollection {
def main(args:Array[String]){
//初始化
var array=Array(1,2,3,4,5,6,7,8,9,10);
var conf=new SparkConf().setAppName("SparkLocalCollection").setMaster("local");
var sc=new SparkContext(conf);
try{
//先并行化处理成RDD,然后执行reduce操作
var count=sc.parallelize(array, 1).reduce(_+_);
println("count is:"+count);
}finally{
sc.stop();
}
}
}


4)运行 Run As -> Scala Application
[img]http://dl2.iteye.com/upload/attachment/0130/4129/6f79aa72-623b-3036-b456-751d745dff35.png[/img]

5)初学者常见问题:
a)为什么我没有run as->scala application
可能是没有定义为object,而是定义成class, class是无法运行的。 同时必须有main方法
b)运行时提示找不到主类 SparkLocalCollection
需要按F5 或者使用maven编译一下

你可能感兴趣的:(大数据,spark,java,scala,环境搭建)