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

    欢迎关注微信公共帐号

  在本博客的《Spark高速入门指南(Quick Start Spark)》文章中简单地介绍了怎样通过Spark shell来高速地运用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 object Test {
14     def main(args: Array[String]) {
15       val logFile = "file:///spark-bin-0.9.1/README.md"
16       val conf = new SparkConf().setAppName("Spark Application in Scala")
17       val sc = new SparkContext(conf)
18       val logData = sc.textFile(logFile, 2).cache()
19       val numAs = logData.filter(line => line.contains("a")).count()
20       val numBs = logData.filter(line => line.contains("b")).count()
21       println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
22     }
23   }
24 }

为了编译这个文件,须要创建一个xxx.sbt文件,这个文件相似于pom.xml文件,这里我们创建一个scala.sbt文件,内容例如以下:

1 name := "Spark application in Scala"
2 version := "1.0"
3 scalaVersion := "2.10.4"
4 libraryDependencies += "org.apache.spark" %% "spark-core" % "1.0.0"
5 resolvers += "Akka Repository" at "http://repo.akka.io/releases/"

编译:

1 # sbt/sbt package
2 [info] Done packaging.
3 [success] Total time: 270 s, completed Jun 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         String logFile = "file:///spark-bin-0.9.1/README.md";
18         SparkConf conf =new SparkConf().setAppName("Spark Application in Java");
19         JavaSparkContext sc = new JavaSparkContext(conf);
20         JavaRDD<String> logData = sc.textFile(logFile).cache();
21  
22         long numAs = logData.filter(new Function<String, Boolean>() {
23             public Boolean call(String s) { return s.contains("a"); }
24         }).count();
25  
26         long numBs = logData.filter(new Function<String, Boolean>() {
27             public Boolean call(String s) { return s.contains("b"); }
28         }).count();
29  
30         System.out.println("Lines with a: " + numAs +",lines with b: " + numBs);
31     }
32 }

本程序分别统计README.md文件里包括a和b的行数。本项目的pom.xml文件内容例如以下:

01 <?xml version="1.0" encoding="UTF-8"?>
02 <project xmlns="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 # mvn install
2 [INFO] ------------------------------------------------------------------------
3 [INFO] BUILD SUCCESS
4 [INFO] ------------------------------------------------------------------------
5 [INFO] Total time: 5.815s
6 [INFO] Finished at: Wed Jun 11 00:01:57 CST 2014
7 [INFO] Final Memory: 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 from pyspark import SparkContext
11  
13 sc = SparkContext("local", "Spark Application in Python")
14 logData = sc.textFile(logFile).cache()
15  
16 numAs = logData.filter(lambda s: 'a' in s).count()
17 numBs = logData.filter(lambda s: 'b' in s).count()
18  
19 print "Lines with a: %i, lines with b: %i" % (numAs, numBs)
四、測试执行

本程序的程序环境是Spark 1.0.0,单机模式,測试例如以下:
1、測试Scala版本号的程序

1 # bin/spark-submit --class "scala.Test"  \
2                    --master local[4]    \
3               target/scala-2.10/simple-project_2.10-1.0.jar
4  
5 14/06/11 01:07:53 INFO spark.SparkContext: Job finished:
6 count at Test.scala:18, took 0.019705 s
7 Lines with a: 62, Lines with b: 35

2、測试Java版本号的程序

1 # bin/spark-submit --class "SimpleApp"  \
2                    --master local[4]    \
3               target/spark-1.0-SNAPSHOT.jar
4  
5 14/06/11 00:49:14 INFO spark.SparkContext: Job finished:
6 count at SimpleApp.java:22, took 0.019374 s
7 Lines with a: 62, lines with b: 35

3、測试Python版本号的程序

1 # bin/spark-submit --master local[4]    \
2                 simple.py
3  
4 Lines with a: 62, lines with b: 35

本文地址:《Spark Standalone模式应用程序开发》:http://www.iteblog.com/archives/1041,过往记忆,大量关于Hadoop、Spark等个人原创技术博客本博客文章除特别声明,所有都是原创!

尊重原创,转载请注明: 转载自过往记忆(http://www.iteblog.com/)
本文链接地址: 《Spark Standalone模式应用程序开发》(http://www.iteblog.com/archives/1041)
E-mail:wyphao.2007@163.com    

Spark Standalone模式应用程序开发的更多相关文章

  1. 在myeclipse中使用Java语言进行spark Standalone模式应用程序开发

    一.环境配置 Myeclipse中虽然已经集成了maven插件,但是由于这个插件版本较低,建立maven project会出现错误. 解决办法:自己到官网http://maven.apache.org ...

  2. 【原】Spark Standalone模式

    Spark Standalone模式 安装Spark Standalone集群 手动启动集群 集群创建脚本 提交应用到集群 创建Spark应用 资源调度及分配 监控与日志 与Hadoop共存 配置网络 ...

  3. 大数据学习day18----第三阶段spark01--------0.前言(分布式运算框架的核心思想,MR与Spark的比较,spark可以怎么运行,spark提交到spark集群的方式)1. spark(standalone模式)的安装 2. Spark各个角色的功能 3.SparkShell的使用,spark编程入门(wordcount案例)

    0.前言 0.1  分布式运算框架的核心思想(此处以MR运行在yarn上为例)  提交job时,resourcemanager(图中写成了master)会根据数据的量以及工作的复杂度,解析工作量,从而 ...

  4. 关于spark standalone模式下的executor问题

    1.spark standalone模式下,worker与executor是一一对应的. 2.如果想要多个worker,那么需要修改spark-env的SPARK_WORKER_INSTANCES为2 ...

  5. Spark Standalone模式HA环境搭建

    Spark Standalone模式常见的HA部署方式有两种:基于文件系统的HA和基于ZK的HA 本篇只介绍基于ZK的HA环境搭建: $SPARK_HOME/conf/spark-env.sh 添加S ...

  6. Spark standalone模式的安装(spark-1.6.1-bin-hadoop2.6.tgz)(master、slave1和slave2)

     前期博客  Spark运行模式概述 Spark standalone简介与运行wordcount(master.slave1和slave2) 开篇要明白 (1)spark-env.sh 是环境变量配 ...

  7. spark standalone模式单节点启动多个executor

    以前为了在一台机器上启动多个executor都是通过instance多个worker来实现的,因为standalone模式默认在一台worker上启动一个executor,造成了很大的不便利,并且会造 ...

  8. [会装]Spark standalone 模式的安装

    1. 简介 以standalone模式安装spark集群bin运行demo. 2.环境和介质准备 2.1 下载spark介质,根据现有hadoop的版本选择下载,我目前的环境中的hadoop版本是2. ...

  9. 50、Spark Streaming实时wordcount程序开发

    一.java版本 package cn.spark.study.streaming; import java.util.Arrays; import org.apache.spark.SparkCon ...

随机推荐

  1. 16.怎样自学Struts2之Struts2异常处理[视频]

    16.怎样自学Struts2之Struts2异常处理[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了,仅仅好传到百度云上: http://pa ...

  2. 如何使用 iOS 7 的 AVSpeechSynthesizer 国家有声读物(4)

    控制:我们一定要学会控制 尤达大师(电影<星球大战>)有话:的关键在于控制.这本故事书是一个字一个字读出来,我愿意为它添加两个button,音调和语速,以便我们能够调整语音合成实时的时候. ...

  3. android 联系数据库

    联系人数据库学习 2011-10-31(这是android2.3在接触db) 简单介绍 Android中联系人的信息都是存储在一个叫contacts2.db的数据库中.该数据库的路径是:/data/d ...

  4. MEF初体验之十:部件重组

    一些应用程序被设计成在运行时可以动态改变.例如,一个新的扩展被下载,或者因为其它的多种多样的原因其它的扩展变得不可用.MEF处理这些多样的场景是依赖我们称作重组的功能来实现的,它可已在最初的组合后改变 ...

  5. A*寻路算法lua实现

    前言:并在相当长的时间没有写blog该,我觉得有点"颓废"该,最近认识到各种同行,也刚刚大学毕业,我认为他们是优秀的.认识到与自己的间隙,有点自愧不如.我没有写blog当然,部分原 ...

  6. 024找到二维阵列(keep it up)

    剑指offer在标题中:http://ac.jobdu.com/problem.php? pid=1384 题目描写叙述: 在一个二维数组中,每一行都依照从左到右递增的顺序排序.每一列都依照从上到下递 ...

  7. quick-cocos2d-x游戏开发【5】——创建菜单

    一个菜单是游戏中的一个基本要素,quick在里面menuItem有两个包.一个是图片菜单.一个文本菜单. 一个.图片菜单ui.newImageMenuItem(params) 參数: image: 正 ...

  8. SQLServer 2012异常问题(二)--由安装介质引发性能问题

    原文:SQLServer 2012异常问题(二)--由安装介质引发性能问题 问题描述:生产环境一个数据库从SQLSERVER 2008 R2升级到SQLSERVER 2012 ,同时更换硬件,但迁移后 ...

  9. android学习记录(三)百度地图错误---只有一个电话显示帧,没有地图内容。

    安卓开发新手百度地图,刚开始碰到一个问题,没有地图信息,还有就是它只有一帧. 如图所示: 上网寻找说是key的问题,然后又一次申请.还是不行. 最后再次看了自己的Manifest文件,发现自己的< ...

  10. C++教程之lambda表达式一

    什么是Lambda? C++ 11增加了一个很重要的特性--Lambda表达式.营里(戴维营)的兄弟都对Objective-C很熟悉,很多人多block情有独钟,将各种回调函数.代理通通都用它来实现. ...