Spark系列—02 Spark程序牛刀小试

一、执行第一个Spark程序

1、执行程序

我们执行一下Spark自带的一个例子,利用蒙特·卡罗算法求PI:

启动Spark集群后,可以在集群的任何一台机器上执行一下命令:

/home/spark/spark-1.6.1-bin-hadoop2.6/bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master spark://master:7077 \

--executor-memory 1G \

--total-executor-cores 2 \

/home/spark/spark-1.6.1-bin-hadoop2.6/lib/spark-examples-1.6.1-hadoop2.6.0.jar \

100

在执行过程中bash上的信息:

image

执行完成bash上的信息:

image

执行过程中WebUI上的信息:

image

image

执行完以后WebUI上的信息:

image

2、命令解析

/home/spark/spark-1.6.1-bin-hadoop2.6/bin/spark-submit \

①spark-submit:提交任务,它是一个Driver,至于它的实现细节后续会有介绍

--class org.apache.spark.examples.SparkPi \

②—class 指定任务的类名(使用反射调用该类的main方法)

--master spark://master:7077 \

③—master 指定集群Master的地址

--executor-memory 1G \

④—executor 指定为每个executor分配的内存大小

--total-executor-cores 2 \

⑤—total-executor 指定分配给所有executor总的处理器核数

(这里先说一下executor是Worker启动的子进程,executor负责执行任务,其细节以后会介绍的。)

/home/spark/spark-1.6.1-bin-hadoop2.6/lib/spark-examples-1.6.1-hadoop2.6.0.jar \

⑥指定任务的jar包地址

100

⑦任务的类的main方法的参数

二、使用 spark-shell

spark-shell是Spark自带的交互式Shell程序,方便用户进行交互式编程,用户可以在该命令行下用scala编写spark程序,spark-shell也是一个Driver。

1、启动 spark-shell

/home/spark/spark-1.6.1-bin-hadoop2.6/bin/spark-shell \

--master spark://master:7077 \

--executor-memory 1g \

--total-executor-cores 2

这个命令的解析其实和上面的spark-submit是一样的,我在这再啰嗦一遍:

参数说明:

--master spark://master:7077 指定Master的地址

--executor-memory 1g 指定每个executor可用内存为1G

--total-executor-cores 2 指定所有executor总的处理器核数为2

还有一点需要非常注意:

如果启动 spark shell 时没有指定master地址,但是也可以正常启动 spark shell 和执行 spark shell 中的程序,其实是启动了spark的local模式,该模式仅在本机启动一个进程,没有与集群建立联系。

还要说明一点:

spark shell 中已经默认将SparkContext类初始化为对象sc。用户代码如果需要用到,则直接应用 sc 即可。SparkContext是Spark集群的入口,Driver只有初始化了SparkContext才可以向Spark集群提交任务,所以这个SparkContext和重要,以后我们会详细介绍整个SparkContext的初始化流程的,现在可以先记住SparkContext是集群的入口,就像Spring中的ApplicationContext一样。

2、在spark shell中编写WordCount程序

(1)首先启动hdfs

(2)向hdfs上传文件words.txt 到 hdfs://hadoop01:9000/spark/words.txt

words.txt的内容:

hello tom
hello jim
hello tom and kitty

(3)在spark shell 中用scala语言编写spark程序:

sc.textFile("hdfs://hadoop01:9000/spark/words.txt").flatMap(_.split(" "))

.map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://hadoop01:9000/spark/out")

(4)使用hdfs命令查看结果:

hdfs dfs -cat hdfs://hadoop01:9000/spark/out/part*

 

(jim,1)
(tom,2)
(hello,3)
(and,1)
(kitty,1)

(5)程序简单说明:

sc.textFile("hdfs://hadoop01:9000/spark/words.txt") 从hdfs中读取数据

flatMap(_.split(" ")) 先map再压平

map((_,1)) 将单词和1构成元组

reduceByKey(_+_) 按照key进行reduce,并将value累加

saveAsTextFile("hdfs://hadoop01:9000/spark/out") 将结果写入到hdfs中

最后:

也可以使用 IDEA 编写完一个程序后打包,使用spark-submit方式提交到集群,在这里我就不写了。一定要注意spark-submit的配置命令不要出错,还要注意自己的程序需要的参数的正确,不要忘了起hdfs。

转载于:https://www.cnblogs.com/lumingkui/p/5532362.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/374623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM选项:-client vs -server

您是否曾经在运行Java应用程序时想知道-client或-server开关是什么? 例如: javaw.exe -client com.blogspot.sdoulger.LoopTest也显示在java.exe的“帮助”中,例如,其中的选项包括: -client选择“客户端” VM -serv…

网页前台小知识

1.左右布局div块自适应,首先外边套一个div,把宽度固定一个px,然后margin设为0 atuo;这样他会根据窗口大小自动变换左右距离.就这么简单</p> 2.多个标签共用一个样式,用,分隔开 p…

统计字符串每个字符出现的次数

//str是个只包含小写字母的字符串&#xff0c;以下是统计每个字符出现的频数 int[] cnt new int[26];//toCharArray() for (char ch : str.toCharArray()) {cnt[ch - a]; }//charAt() for(int i 0;i<str.length;i){char ch str.charAt(i);cnt[ch - a]; }

在Java 7中处理文件

以下是The Well-Grounded Java Developer的草稿的修改后的片段。 它使您快速了解与以前版本相比&#xff0c;在Java 7中操作文件要容易得多。 通过使用新的Files类及其许多实用程序方法&#xff0c;您可以仅用一行代码就可以对文件执行以下操作&#xff1a; 创建 删除 复制 …

3.1存储管理操作系统

存储器管理的对象是主存&#xff08;内存&#xff09;。其主要功能包含分配和回收主存空间、提高主存的利用率、扩充主存、对主存信息实现有效保护。存储器的结构为&#xff1a;寄存去、缓存、主存、外存。逻辑地址&#xff08;对用户角度。程序存放的位置&#xff09;、物理地…

学习教材《构建之法》遇到的问题及思路

在学习中每个人都会遇到各种各样的问题&#xff0c;下面就是我遇到的问题及可能解决问题的思路。 1.如何写好程序的注释&#xff0c;每个人都会写注释&#xff0c;但是&#xff0c;需要注释什么&#xff1f; 思路&#xff1a;注释是为了解释程序做什么&#xff0c;为什么要这样…

了解和扩展Java ClassLoader

Java ClassLoader是项目开发中Java的关键但很少使用的组件之一。 就我个人而言&#xff0c;我从未在任何项目中扩展ClassLoader&#xff0c;但是拥有自己的可以自定义Java类加载的ClassLoader的想法让我感到很兴奋。 本文将概述Java类加载&#xff0c;然后继续创建自定义ClassL…

CAD教程-AL对其命令

AL可以实现不规则的对其功能 1.第一步按下AL&#xff0c;按下Enter 2.选择第一个源点 3.选择第一个目标点 4.选择第二个源点 5.选择第二个目标点 6.按下Enter&#xff0c;完成移位 转载于:https://www.cnblogs.com/weloveshare/p/4739873.html

使用Spring将POJO公开为JMX MBean

这是一个非常不错的教程&#xff0c;介绍了如何通过我们最新的JCG合作伙伴 “ The Holy Java ”博客&#xff08;很酷的名字&#xff09;实现“ 用Spring轻松将POJO作为JMX MBean公开 ”。 &#xff08;注意&#xff1a;对原始帖子进行了少量编辑以提高可读性&#xff09; Jav…

mysql 5.1由于Host为localhost的用户为空,密码为空,导致本地用户无法登陆。

不说了。直接上mysql的用户数据&#xff0c;第四列里面&#xff0c;host为localhost&#xff0c;用户为空&#xff0c;密码为空。 导致在本地登陆的时候除了root的账户外&#xff0c;其他账号不需要密码即可登陆&#xff0c;并且影响host为 %的用户登陆。 这里只需要删除对应的…

scala 88 for替换map,flatmap,filtermap,for,scala,flatmap

王家林亲授《DT大数据梦工厂》大数据实战视频“Scala深入浅出实战经典”视频、音频和PPT下载&#xff01;第88讲&#xff1a;Scala中使用For表达式实现map、flatMap、filter百度云盘&#xff1a;http://pan.baidu.com/s/1mgtgcIG360云盘&#xff1a;http://yunpan.cn/cdXsbctXf…

简单阐述下OC中UIImage三种创建方式~~~

一. 直接使用imageNamed进行创建 1 UIImage * image [UIImage imageNamed:"1.jpg"]; 简单说一下这种方式的优缺点&#xff1a; 优点&#xff1a;代码量少&#xff0c;一行代码就可以搞定。当程序中多次加载这张图片时&#xff0c;系统会指向同一块内存&#xff0c;…

(一二四)tableView的多组数据展示和手动排序

最近在写一个轻量级的网络游戏&#xff0c;遇到了技能优先顺序手动排序的需求&#xff0c;我就想到了iOS自带的tableView编辑功能&#xff0c;对其进行了初步探索&#xff0c;最后做出的效果如下图所示&#xff1a; 点击左边可以删除&#xff0c;拖住右边可以手动排序&#xff…

ARC_xp_20160530

1、 申请内存的地方在哪里&#xff1f;忘了...(应该是用的 malloc) 2、 键盘上按下一个键&#xff0c;处理的函数为&#xff1a;(所在的模块 应该是“CEGUIIrrlichtRenderer.dll”) 003B465F CC INT3 003B4660 /$ 53 PUSH EBX 003B4661 |. 56 …

Hibernate映射集合性能问题

首先&#xff0c;这篇文章的灵感来自于Burt Beckwith在2011年1月27日于SpringOne 2GX上发表的有关高级GORM –性能&#xff0c;定制和监控的演讲 。 简而言之&#xff0c; Burt Beckwith讨论了使用映射集合和GORM中的Hibernate 2级缓存的潜在性能问题&#xff0c;以及避免此类性…

算法:1!+(1!+3!)+(1!+3!+5!) + ( 1! + 3! + 5! + 7! + 9!)+....+(1!+3!+5!+ ... + m!)...

-(void)touchesBegan:(nonnull NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event{ //算法入口 [self func2:9]; } //计算阶乘 factor&#xff08;m&#xff09;&#xff1d; m&#xff01; -(int)factor:(int)m{ int factorNum0; if(m0|m1) return 1; e…

知道这 20 个正则表达式,能让你少写 1,000 行代码

CocoaChina05-13正则表达式&#xff0c;一个十分古老而又强大的文本处理工具&#xff0c;仅仅用一段非常简短的表达式语句&#xff0c;便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话&#xff0c;能够使你的开发效率得到极大的提升。下面是技匠整理的&#x…

用Jackson进行Java JSON处理

JSON &#xff08;Javascript对象符号&#xff09;正成为一种非常流行的数据交换格式。 在使用诸如YUI&#xff0c;ExtJS&#xff0c;DOJO等Javascript框架开发Web应用程序时&#xff0c;我们可以使用XML或JSON在客户端和服务器之间交换数据。 通常&#xff0c;我们从服务器获得…

Android Togglebutton 默认背景被放大

1 . 最近在项目中自定义toggleButton 发现背景图放入后 &#xff0c;比美工给我的原图要大很大 2. 为什么&#xff1f; 3.比较ToggleButton 和TextView源码 发现, toggleButton 设置了minWidth 和minHeigh &#xff0c;导致我的背景小图被拉伸。 4.解决这种问题&#xff1a; 重…

MapReduce:简单介绍

MapReduce是Google流行的一种并行编程技术。 它用于处理大量数据。 仅通过将工作并行分配给多台机器&#xff0c;就可以在合理的时间内完成这种处理。 每台机器都处理一小部分数据。 MapReduce是一种编程模型&#xff0c;使开发人员可以专注于编写处理数据的代码&#xff0c;而…