Spark高速入门指南(Quick Start Spark)
版权声明:本博客已经不再更新。请移步到Hadoop技术博客:https://www.iteblog.com https://blog.csdn.net/w397090770/article/details/32699893
| 作者:过往记忆 | 新浪微博:左手牵右手TEL | 能够转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 博客地址:http://www.iteblog.com/ 文章标题:《Spark高速入门指南(Quick Start Spark)》 本文链接:http://www.iteblog.com/archives/1040 Hadoop、Hive、Hbase、Flume等QQ交流群:138615359(已满),请增加新群:149892483 本博客的微信公共帐号为:iteblog_hadoop。欢迎大家关注。 假设你认为本文对你有帮助,最好还是分享一次,你的每次支持。都是对我最大的鼓舞 v=7314c5f6.png); background-position: 0px -1612px; background-repeat: no-repeat;"> v=7314c5f6.png); background-position: 0px -2080px; background-repeat: no-repeat;"> v=7314c5f6.png); background-position: 0px -1196px; background-repeat: no-repeat;"> |
![]() 欢迎关注微信公共帐号 |
这个文档仅仅是简单的介绍怎样高速地使用Spark。
在以下的介绍中我将介绍怎样通过Spark的交互式shell来使用API。
Basics
Spark shell提供一种简单的方式来学习它的API,同一时候也提供强大的方式来交互式地分析数据。Spark shell支持Scala和Python。能够通过以下方式进入到Spark shell中。
1 |
# 本文原文地址:http://www.iteblog.com/archives/1040 |
2 |
# 过往记忆。大量关于Hadoop、Spark等个人原创技术博客 |
3 |
4 |
./bin/spark-shell |
Spark的一个基本抽象概念就是RDD。RDDs能够通过Hadoop InputFormats或者通过其它的RDDs通过transforming来得到。
以下的样例是通过载入SPARK_HOME文件夹下的README文件来构建一个新的RDD
1 |
scala> textFilval textFile = sc.textFile("file:///spark-bin-0.9.1/README.md") |
2 |
textFile:org.apache.spark.rdd.RDD[String]=MappedRDD[3]at textFile at <console>:1 |
RDDs提供actions操作。通过它能够返回值。同一时候还提供 transformations操作,通过它能够返回一个新的RDD的引用。例如以下:
1 |
scala> textFile.count() // Number of items in this RDD |
2 |
res1: Long = 108 |
3 |
4 |
scala> textFile.first() // First item in this RDD |
5 |
res2: String = # Apache Spark |
我们再试试transformations操作,以下的样例中我们通过使用filter transformation来一个新的RDD:
1 |
scala> val linesWithSpark = textFile.filter(line => line.contains("Spark")) |
2 |
linesWithSpark: org.apache.spark.rdd.RDD[String] = FilteredRDD[4] at |
3 |
filter at <console>:14 |
我们将transformations操作和actions操作连起来操作:
1 |
scala> textFile.filter(line => line.contains("Spark")).count() |
2 |
res3: Long = 15 |
很多其它关于RDD上面的操作
RDD的transformations操作和actions操作能够用于更复杂的计算。以下的样例是找出README.md文件里单词数最多的行有多少个单词
1 |
scala> var size = textFile.map(line=>line.split(" ").size) |
2 |
scala> size.reduce((a, b)=>if (a > b) a else b) |
3 |
res4: Long = 15 |
map函数负责将line依照空格切割,并得到这行单词的数量,而reduce函数将获取文件里单词数最多的行有多少个单词。map和reduce函数的參数是Scala的函数式编程风格。我们能够直接用Java里面的Math.max()函数,这样会使得这段代码更好理解
1 |
scala> import java.lang.Math |
2 |
import java.lang.Math |
3 |
4 |
scala> textFile.map(line => line.split(" ").size).reduce((a, b)=>Math.max(a, b)) |
5 |
res10: Int = 15 |
我们比較熟悉的一种数据流模式是MapReduce。Spark能够非常easy地实现MapReduce流
1 |
scala> val wordCounts = textFile.flatMap(line => line.split(" ")) |
2 |
.map(word => (word, 1)).reduceByKey((a, b) => a + b) |
3 |
wordCounts: org.apache.spark.rdd.RDD[(String, Int)] = |
4 |
MapPartitionsRDD[16] at reduceByKey at <console>:15 |
在上面的代码中,我们结合了flatMap,map和reduceByKey等transformations 操作来计算文件里每一个单词的数量。并生成一个(String, Int) pairs形式的RDD。为了计算单词的数量。我们能够用collect action来实现:
01 |
scala> wordCounts.collect() |
02 |
res11: Array[(String, Int)]=Array(("",120),(submitting,1),(find,1),(versions,4), |
03 |
((`./bin/pyspark`).,1), (Regression,1), (via,2), (tests,2), (open,2), |
04 |
(./bin/spark-shell,1), (When,1), (All,1), (download,1), (requires,2), |
05 |
(SPARK_YARN=true,3), (Testing,1), (take,1), (project,4), (no,1), |
06 |
(systems.,1), (file,1), (<params>`.,1), (Or,,1), (`<dependencies>`,1), |
07 |
(About,1), (project's,3), (`<master>`,1), (programs,2),(given.,1),(obtained,1), |
08 |
(sbt/sbt,5), (artifact,1), (SBT,1), (local[2],1), (not,1), (runs.,1), (you,5), |
09 |
(building,1), (Along,1), (Lightning-Fast,1), (built,,1), (Hadoop,,1), (use,2), |
10 |
(MRv2,,1), (it,2), (directory.,1), (overview,1), (2.10.,1),(The,1),(easiest,1), |
11 |
(Note,1), (guide](http://spark.apache.org/docs/latest/configuration.html),1), |
12 |
(setup,1), ("org.apache.hadoop",1),... |
Caching
Spark能够将数据集存放在集群中的缓存中。这个在数据集常常被訪问的场景下非常实用。比方hot数据集的查询,或者像PageRank这种须要迭代非常多次的算法。作为一个简单的列子。以下是将我们自己的linesWithSpark dataset存入到缓存中:
1 |
scala> linesWithSpark.cache() |
2 |
res12: org.apache.spark.rdd.RDD[String] =FilteredRDD[4] at filter at <console>:14 |
3 |
4 |
scala> linesWithSpark.count() |
5 |
res13: Long = 15 |
6 |
7 |
scala> linesWithSpark.count() |
8 |
res14: Long = 15 |
利用Spark来缓存100行的数据看起来有点傻,可是我们能够通过相同的函数来存储非常大的数据集,甚至这些数据集分布在几十或者几百台节点上。
本文翻译自Spark中的文档,本文地址:《Spark高速入门指南(Quick Start Spark)》:http://www.iteblog.com/archives/1040,过往记忆,大量关于Hadoop、Spark等个人原创技术博客本博客文章除特别声明,所有都是原创!
尊重原创。转载请注明: 转载自过往记忆(http://www.iteblog.com/)
本文链接地址: 《Spark高速入门指南(Quick Start Spark)》(http://www.iteblog.com/archives/1040)
E-mail:wyphao.2007@163.com
Spark高速入门指南(Quick Start Spark)的更多相关文章
- [转] Spark快速入门指南 – Spark安装与基础使用
[From] https://blog.csdn.net/w405722907/article/details/77943331 Spark快速入门指南 – Spark安装与基础使用 2017年09月 ...
- Spark性能优化指南-高级篇(spark shuffle)
Spark性能优化指南-高级篇(spark shuffle) 非常好的讲解
- 【转】Spark快速入门指南
尊重版权,原文:http://blog.csdn.net/macyang/article/details/7100523 - Spark是什么? Spark is a MapReduce-like ...
- Spark Streaming 入门指南
这篇博客帮你开始使用Apache Spark Streaming和HBase.Spark Streaming是核心Spark API的一个扩展,它能够处理连续数据流. Spark Streaming是 ...
- 转】Spark DataFrames入门指南:创建和操作DataFrame
原博文出自于: http://blog.csdn.net/lw_ghy/article/details/51480358 感谢! 一.从csv文件创建DataFrame 本文将介绍如何从csv文件创建 ...
- JWPlayer高速入门指南(中文)
将JW Player嵌入到网页中很的简单,仅仅须要进行例如以下3个步骤: 1.解压mediaplayer-viral.zip文件.将jwplayer.js和player.swf文件复制到project ...
- .NET 动态脚本语言Script.NET 入门指南 Quick Start
Script.NET是一种动态的脚本语言,它使得程序可扩展,可定制,和维护性好.和Office系列的VB Script相似,可以在应用中嵌入大量的代码块,以便在运行时才执行这些代码. Script.N ...
- Spark—GraphX编程指南
Spark系列面试题 Spark面试题(一) Spark面试题(二) Spark面试题(三) Spark面试题(四) Spark面试题(五)--数据倾斜调优 Spark面试题(六)--Spark资源调 ...
- Spark性能优化指南——基础篇
本文转自:http://tech.meituan.com/spark-tuning-basic.html 感谢原作者 前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一 ...
随机推荐
- Android——加载模式
<activity android:name=".MainActivity" android:launchMode="standard"><! ...
- Hive及HBase数据迁移
一. Hive数据迁移 场景:两个Hadoop平台集群之间Hive表迁移. 基本思路:Hive表元数据和文件数据export到HDFS文件,通过Distcp将HDFS迁移到另一个集群的HDFS文件,再 ...
- adb not responding的解决方案
查看谁占用了进程:netstat -aon|findstr "5037" 终止占用的进程: 假若"6908"占用了进程 taskkill /pid 6908 / ...
- Latex之希腊字母表 花体字母 实数集
花体字母 \mathcal{x} 实数集字母 \mathbb{R} 转自:http://blog.csdn.net/lanchunhui/article/details/49819445 拉丁字母是2 ...
- 10个网页设计师必备的CSS技巧(转)
英文原文:10 Essential CSS Rules for Web Designers CSS是网页设计师的基础,对CSS的了解能使他们能够设计出更加美观别致的网页.使用CSS技巧来巧妙地处理CS ...
- 【BZOJ】1634: [Usaco2007 Jan]Protecting the Flowers 护花(贪心)
http://www.lydsy.com/JudgeOnline/problem.php?id=1634 贪心.. 我们发现,两个相邻的牛(a和b)哪个先走对其它的牛无影响,但是可以通过 a的破坏花× ...
- ulimit命令学习
通过ulimit -n命令可以查看linux系统里打开文件描述符的最大值,一般缺省值是1024,对一台繁忙的服务器来说,这个值偏小,所以有必要重新设置linux系统里打开文件描述符的最大值.那么应该在 ...
- 神经网络Batch Normalization——学习笔记
训练神经网络的过程,就是在求未知参数(权重).让网络搭建起来,得到理想的结果. 分类-监督学习. 反向传播求权重:每一层在算偏导数.局部梯度,链式法则. 激活函数: sigmoid仅中间段趋势良好 对 ...
- css图标
一.介绍 采用这种字体,我们可以避免网站制作中采用好多图片,一方面解决了浏览器的兼容性问题.另一方面,这些字体都是矢量字体,我们只要在调整这些图标时,将他们的字体大小以及颜色,我们就可以解决很多不是图 ...
- Python爬虫(七)
源码: import requests import re from my_mysql import MysqlConnect # 获取详情页链接和电影名称 def get_urls(page): u ...
