作者:过往记忆|新浪微博:左手牵右手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版本号:程序例如以下:
06 | *bolg:http://www.iteblog.com |
07 | *本文地址:http://www.iteblog.com/archives/1041 |
08 | *过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客,大量的干货 |
09 | *过往记忆博客微信公共帐号:iteblog_hadoop |
11 | import org.apache.spark.SparkContext |
12 | import org.apache.spark.SparkConf |
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)) |
为了编译这个文件,须要创建一个xxx.sbt文件,这个文件相似于pom.xml文件,这里我们创建一个scala.sbt文件,内容例如以下:
1 | name:= "SparkapplicationinScala" |
4 | libraryDependencies+= "org.apache.spark" %% "spark-core" % "1.0.0" |
5 | resolvers+= "AkkaRepository" at "http://repo.akka.io/releases/" |
编译:
3 | [success]Totaltime: 270 s,completedJun 11 , 2014 1 : 05 : 54 AM |
二、Java版本号05 | *bolg:http://www.iteblog.com |
06 | *本文地址:http://www.iteblog.com/archives/1041 |
07 | *过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客,大量的干货 |
08 | *过往记忆博客微信公共帐号:iteblog_hadoop |
11 | import org.apache.spark.api.java.*; |
12 | import org.apache.spark.SparkConf; |
13 | import org.apache.spark.api.java.function.Function; |
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(); |
22 | long numAs=logData.filter( new Function<String,Boolean>(){ |
23 | public Booleancall(Strings){ return s.contains( "a" );} |
26 | long numBs=logData.filter( new Function<String,Boolean>(){ |
27 | public Booleancall(Strings){ return s.contains( "b" );} |
30 | System.out.println( "Lineswitha:" +numAs+ ",lineswithb:" +numBs); |
本程序分别统计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 |
06 | http: //maven.apache.org/xsd/maven-4.0.0.xsd"> |
08 | <modelVersion> 4.0 . 0 </modelVersion> |
10 | <groupId>spark</groupId> |
11 | <artifactId>spark</artifactId> |
16 | <groupId>org.apache.spark</groupId> |
17 | <artifactId>spark-core_2. 10 </artifactId> |
18 | <version> 1.0 . 0 </version> |
利用Maven来编译这个工程:
2 | [INFO]------------------------------------------------------------------------ |
4 | [INFO]------------------------------------------------------------------------ |
6 | [INFO]Finishedat:WedJun 11 00 : 01 : 57 CST 2014 |
7 | [INFO]FinalMemory:13M/32M |
8 | [INFO]------------------------------------------------------------------------ |
三、Python版本号05 | #bolg:http: //www.iteblog.com |
06 | #本文地址:http: //www.iteblog.com/archives/1041 |
07 | #过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客,大量的干货 |
08 | #过往记忆博客微信公共帐号:iteblog_hadoop |
10 | frompyspark import SparkContext |
12 | logFile= "file:///spark-bin-0.9.1/README.md" |
13 | sc=SparkContext( "local" , "SparkApplicationinPython" ) |
14 | logData=sc.textFile(logFile).cache() |
16 | numAs=logData.filter(lambdas: 'a' ins).count() |
17 | numBs=logData.filter(lambdas: 'b' ins).count() |
19 | print "Lineswitha:%i,lineswithb:%i" %(numAs,numBs) |
四、測试执行本程序的程序环境是Spark1.0.0,单机模式,測试例如以下:
1、測试Scala版本号的程序
1 | #bin/spark-submit-- class "scala.Test" \ |
3 | target/scala- 2.10 /simple-project_2. 10 - 1.0 .jar |
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" \ |
3 | target/spark- 1.0 -SNAPSHOT.jar |
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 ]\ |
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理