您的位置:首页 > 其它

Spark Standalone模式应用程序开发

2015-03-11 18:41 330 查看
作者:过往记忆|新浪微博:左手牵右手TEL|
能够转载,但必须以超链接形式标明文章原始出处和作者信息及版权声明
博客地址:http://www.iteblog.com/
文章标题:《SparkStandalone模式应用程序开发》
本文链接:http://www.iteblog.com/archives/1041
Hadoop、Hive、Hbase、Flume等QQ交流群:138615359(已满),请增加新群:149892483
本博客的微信公共帐号为:iteblog_hadoop,欢迎大家关注。
假设你认为本文对你有帮助,最好还是分享一次,你的每次支持,都是对我最大的鼓舞


欢迎关注微信公共帐号
  在本博客的《Spark高速入门指南(QuickStartSpark)》文章中简单地介绍了怎样通过Sparkshell来高速地运用API。本文将介绍怎样高速地利用Spark提供的API开发Standalone模式的应用程序。Spark支持三种程序语言的开发:Scala(利用SBT进行编译),Java(利用Maven进行编译)以及Python。以下我将分别用Scala、Java和Python开发相同功能的程序:

一、Scala版本号:程序例如以下:

01
package
scala
02
/**
03
*User:过往记忆
04
*Date:14-6-10
05
*Time:下午11:37
06
*bolg:http://www.iteblog.com
07
*本文地址:http://www.iteblog.com/archives/1041
08
*过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客,大量的干货
09
*过往记忆博客微信公共帐号:iteblog_hadoop
10
*/
11
import
org.apache.spark.SparkContext
12
import
org.apache.spark.SparkConf
13
objectTest{
14
defmain(args:Array[String]){
15
vallogFile=
"file:///spark-bin-0.9.1/README.md"
16
valconf=
new
SparkConf().setAppName(
"SparkApplicationinScala"
)
17
valsc=
new
SparkContext(conf)
18
vallogData=sc.textFile(logFile,
2
).cache()
19
valnumAs=logData.filter(line=>line.contains(
"a"
)).count()
20
valnumBs=logData.filter(line=>line.contains(
"b"
)).count()
21
println(
"Lineswitha:%s,Lineswithb:%s"
.format(numAs,numBs))
22
}
23
}
24
}
为了编译这个文件,须要创建一个xxx.sbt文件,这个文件相似于pom.xml文件,这里我们创建一个scala.sbt文件,内容例如以下:

1
name:=
"SparkapplicationinScala"
2
version:=
"1.0"
3
scalaVersion:=
"2.10.4"
4
libraryDependencies+=
"org.apache.spark"
%%
"spark-core"
%
"1.0.0"
5
resolvers+=
"AkkaRepository"
at
"http://repo.akka.io/releases/"
编译:

1
#sbt/sbt
package
2
[info]Donepackaging.
3
[success]Totaltime:
270
s,completedJun
11
,
2014
1
:
05
:
54
AM
二、Java版本号
01
/**
02
*User:过往记忆
03
*Date:14-6-10
04
*Time:下午11:37
05
*bolg:http://www.iteblog.com
06
*本文地址:http://www.iteblog.com/archives/1041
07
*过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客,大量的干货
08
*过往记忆博客微信公共帐号:iteblog_hadoop
09
*/
10
/*SimpleApp.java*/
11
import
org.apache.spark.api.java.*;
12
import
org.apache.spark.SparkConf;
13
import
org.apache.spark.api.java.function.Function;
14
15
public
class
SimpleApp{
16
public
static
void
main(String[]args){
17
StringlogFile=
"file:///spark-bin-0.9.1/README.md"
;
18
SparkConfconf=
new
SparkConf().setAppName(
"SparkApplicationinJava"
);
19
JavaSparkContextsc=
new
JavaSparkContext(conf);
20
JavaRDD<String>logData=sc.textFile(logFile).cache();
21
22
long
numAs=logData.filter(
new
Function<String,Boolean>(){
23
public
Booleancall(Strings){
return
s.contains(
"a"
);}
24
}).count();
25
26
long
numBs=logData.filter(
new
Function<String,Boolean>(){
27
public
Booleancall(Strings){
return
s.contains(
"b"
);}
28
}).count();
29
30
System.out.println(
"Lineswitha:"
+numAs+
",lineswithb:"
+numBs);
31
}
32
}
本程序分别统计README.md文件里包括a和b的行数。本项目的pom.xml文件内容例如以下:

01
<?xmlversion=
"1.0"
encoding=
"UTF-8"
?>
02
<projectxmlns=
"http://maven.apache.org/POM/4.0.0"
03
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
04
xsi:schemaLocation="http:
//maven.apache.org/POM/4.0.0
05
06
http:
//maven.apache.org/xsd/maven-4.0.0.xsd">
07
08
<modelVersion>
4.0
.
0
</modelVersion>
09
10
<groupId>spark</groupId>
11
<artifactId>spark</artifactId>
12
<version>
1.0
</version>
13
14
<dependencies>
15
<dependency>
16
<groupId>org.apache.spark</groupId>
17
<artifactId>spark-core_2.
10
</artifactId>
18
<version>
1.0
.
0
</version>
19
</dependency>
20
</dependencies>
21
</project>
利用Maven来编译这个工程:

1
#mvninstall
2
[INFO]------------------------------------------------------------------------
3
[INFO]BUILDSUCCESS
4
[INFO]------------------------------------------------------------------------
5
[INFO]Totaltime:
5
.815s
6
[INFO]Finishedat:WedJun
11
00
:
01
:
57
CST
2014
7
[INFO]FinalMemory:13M/32M
8
[INFO]------------------------------------------------------------------------
三、Python版本号
01
#
02
#User:过往记忆
03
#Date:
14
-
6
-
10
04
#Time:下午
11
:
37
05
#bolg:http:
//www.iteblog.com
06
#本文地址:http:
//www.iteblog.com/archives/1041
07
#过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客,大量的干货
08
#过往记忆博客微信公共帐号:iteblog_hadoop
09
#
10
frompyspark
import
SparkContext
11
12
logFile=
"file:///spark-bin-0.9.1/README.md"
13
sc=SparkContext(
"local"
,
"SparkApplicationinPython"
)
14
logData=sc.textFile(logFile).cache()
15
16
numAs=logData.filter(lambdas:
'a'
ins).count()
17
numBs=logData.filter(lambdas:
'b'
ins).count()
18
19
print
"Lineswitha:%i,lineswithb:%i"
%(numAs,numBs)
四、測试执行本程序的程序环境是Spark1.0.0,单机模式,測试例如以下:
1、測试Scala版本号的程序

1
#bin/spark-submit--
class
"scala.Test"
\
2
--masterlocal[
4
]\
3
target/scala-
2.10
/simple-project_2.
10
-
1.0
.jar
4
5
14
/
06
/
11
01
:
07
:
53
INFOspark.SparkContext:Jobfinished:
6
countatTest.scala:
18
,took
0.019705
s
7
Lineswitha:
62
,Lineswithb:
35
2、測试Java版本号的程序

1
#bin/spark-submit--
class
"SimpleApp"
\
2
--masterlocal[
4
]\
3
target/spark-
1.0
-SNAPSHOT.jar
4
5
14
/
06
/
11
00
:
49
:
14
INFOspark.SparkContext:Jobfinished:
6
countatSimpleApp.java:
22
,took
0.019374
s
7
Lineswitha:
62
,lineswithb:
35
3、測试Python版本号的程序

1
#bin/spark-submit--masterlocal[
4
]\
2
simple.py
3
4
Lineswitha:
62
,lineswithb:
35
本文地址:《SparkStandalone模式应用程序开发》:http://www.iteblog.com/archives/1041,过往记忆,大量关于Hadoop、Spark等个人原创技术博客本博客文章除特别声明,所有都是原创!

尊重原创,转载请注明:转载自过往记忆(http://www.iteblog.com/)
本文链接地址:《SparkStandalone模式应用程序开发》(http://www.iteblog.com/archives/1041)
E-mail:wyphao.2007@163.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: