Spark改进了Hadoop执行非流式算法的需要多次IO的缺陷,Spark的所有操作都是基于RDD弹性分布式数据集这种数据结构的,对RDD的操作主要的操作包括transform和action两种操作。另外,Spark对开发者好用是因为程序由其内在机制自动分布式执行,不需要程序员对分布式考虑太多,且在内存中基本不需要磁盘IO。

Spark Shell

1.1基础RDD操作

1 启动shell,进入spark安装路径。

输入 ./bin/spark-shell

2 创建RDD弹性分布式数据集:(/user/mapr/README.md)

val textFile = sc.textFile("README.md")

3 action命令的使用:统计文本的行数。

textFile.count()

4 transform命令的使用:

val linesWithSpark = textFile.filter(line => line.contains("Spark"))

5 action命令和transform命令的结合使用

textFile.filter(line => line.contains("Spark")).count()

1.2 其它RDD操作

1 统计单词最多的行:

textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)

运行机制:Map函数创建并返回一个新的RDD,为每行的单词数;由于惰性机制,reduce调用RDD并统计单词最多的行。

2 使用math函数,使计算过程更直观

import java.lang.Math
textFile.map(line => line.split(" ").size).reduce((a, b) => Math.max(a, b))

3 WordCount例子的spark版,实现更简单:

val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
wordCounts.collect()

1.3 缓存机制

RDD内存惰性机制,只有action调用需要的RDD时,才会执行transform操作,显然只有节省了带宽。但是若多次action操作调用一个RDD,这个RDD会被计算多次,这样就引出了缓存机制的优势。

1 RDD保存到缓存中:

linesWithSpark.cache()

2 下面两次调用RDD,只执行一次计算:

linesWithSpark.count()
linesWithSpark.count()

参考官方教程:http://spark.apache.org/docs/latest/quick-start.html

Spark实战1:shell+独立App使用总结的更多相关文章

  1. 实战使用Axure设计App,使用WebStorm开发(6) – 迈向后端

    系列文章 实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求  实战使用Axure设计App,使用WebStorm开发(2) – 创建 Ionic 项目   实战使 ...

  2. 实战使用Axure设计App,使用WebStorm开发(5) – 实现页面功能

    系列文章 实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求  实战使用Axure设计App,使用WebStorm开发(2) – 创建 Ionic 项目   实战使 ...

  3. 实战使用Axure设计App,使用WebStorm开发(4) – 实现页面UI

    系列文章 实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求  实战使用Axure设计App,使用WebStorm开发(2) – 创建 Ionic 项目   实战使 ...

  4. 实战使用Axure设计App,使用WebStorm开发(2) – 创建 Ionic 项目

    系列文章 实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求  实战使用Axure设计App,使用WebStorm开发(2) – 创建 Ionic 项目   实战使 ...

  5. 实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求

    系列文章 实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求  实战使用Axure设计App,使用WebStorm开发(2) – 创建 Ionic 项目   实战使 ...

  6. 实战使用Axure设计App,使用WebStorm开发(3) – 构建页面架构

    系列文章 实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求  实战使用Axure设计App,使用WebStorm开发(2) – 创建 Ionic 项目   实战使 ...

  7. Spark实战1

    1. RDD-(Resilient Distributed Dataset)弹性分布式数据集      Spark以RDD为核心概念开发的,它的运行也是以RDD为中心.有两种RDD:第一种是并行Col ...

  8. Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈与熟练的掌握Scala语言【大数据Spark实战高手之路】

    Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈 大数据的概念与应用,正随着智能手机.平板电脑的快速流行而日渐普及,大数据中图的并行化处理一直是一个非常热门的话题.图计算正在被广泛地应用于社交 ...

  9. shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)

    shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) Shell脚本与MySQL数据库交互(增删改查) # 环境准备:安装mariadb 数据库 [ro ...

随机推荐

  1. ubuntu12.04 登录黑屏

    新安装的ubuntu12.04LTS,登录之后黑屏,切换到ubuntu2D能够进入UI.解决方法记录于此. 转载: http://blog.csdn.net/albertsh/article/deta ...

  2. 如何安装sass

    1.安装ruby 2. 运行ruby时输入 gem install 及sass安装文件路径. sass安装文件见文件.

  3. RFS_javascript的使用

    1. RFS对javascript的调用 (1)调用javascript语句 (2)调用javascript函数 2. IE8不支持javascript的 getElementsByClassName ...

  4. [PCL]1 PCL点云库安装

    1.安装文件下载:官网,我还是比较喜欢别人编译好的安装包啊,哈哈. http://www.pointclouds.org/downloads/windows.html 2.傻瓜式安装(下面的依赖项都集 ...

  5. CentOS下netstat + awk 查看tcp的网络连接状态

    执行以下命令: #netstat -n | awk ‘/^tcp/ {++state[$NF]} END {for(key in state) print key."\t".sta ...

  6. Azure Remote Desktop: "An error occurred while loading from file *.rdp"

    Tonight I deployed a new cloud service where I needed remote desktop to check on some things. After ...

  7. TNS-01251: Cannot set trace/log directory under ADR

    试图改变监听日志的名称时,报出TNS-01251错误: $ lsnrctl LSNRCTL - Production on -JUN- :: Copyright (c) , , Oracle. All ...

  8. XMPP协议介绍

    一.xmpp协议工作原理 二.XMPP地址模式 三.xmpp消息格式 xmpp xml包括三个元素,message,presence,iq,也翻译做三种节. 在'jabber:client'和'jab ...

  9. Eclipse+SVN搭建开发环境

    目前我们开发环境为:windows service 2008 r2 x64 现在开始记录一下eclipse+SVN环境搭建过程: 1,)下载 VisualSVN-Server-3.4.2-x64:ht ...

  10. j2ee ehcache

    Ehcache is an open source, standards-based cache that boosts performance, offloads your database, an ...