Spark高速入门指南(Quick Start Spark)

时间:2022-09-04 17:31:22

版权声明:本博客已经不再更新。请移步到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高速入门指南(Quick Start Spark)
    欢迎关注微信公共帐号

  这个文档仅仅是简单的介绍怎样高速地使用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)的更多相关文章

  1. &lbrack;转&rsqb; Spark快速入门指南 – Spark安装与基础使用

    [From] https://blog.csdn.net/w405722907/article/details/77943331 Spark快速入门指南 – Spark安装与基础使用 2017年09月 ...

  2. Spark性能优化指南-高级篇&lpar;spark shuffle&rpar;

    Spark性能优化指南-高级篇(spark shuffle) 非常好的讲解

  3. 【转】Spark快速入门指南

    尊重版权,原文:http://blog.csdn.net/macyang/article/details/7100523   - Spark是什么? Spark is a MapReduce-like ...

  4. Spark Streaming 入门指南

    这篇博客帮你开始使用Apache Spark Streaming和HBase.Spark Streaming是核心Spark API的一个扩展,它能够处理连续数据流. Spark Streaming是 ...

  5. 转】Spark DataFrames入门指南:创建和操作DataFrame

    原博文出自于: http://blog.csdn.net/lw_ghy/article/details/51480358 感谢! 一.从csv文件创建DataFrame 本文将介绍如何从csv文件创建 ...

  6. JWPlayer高速入门指南(中文)

    将JW Player嵌入到网页中很的简单,仅仅须要进行例如以下3个步骤: 1.解压mediaplayer-viral.zip文件.将jwplayer.js和player.swf文件复制到project ...

  7. &period;NET 动态脚本语言Script&period;NET 入门指南 Quick Start

    Script.NET是一种动态的脚本语言,它使得程序可扩展,可定制,和维护性好.和Office系列的VB Script相似,可以在应用中嵌入大量的代码块,以便在运行时才执行这些代码. Script.N ...

  8. Spark性能优化指南——基础篇

    本文转自:http://tech.meituan.com/spark-tuning-basic.html 感谢原作者 前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一 ...

  9. Spark Streaming 编程入门指南

    Spark Streaming 是核心Spark API的扩展,可实现实时数据流的可伸缩,高吞吐量,容错流处理.可以从许多数据源(例如Kafka,Flume,Kinesis或TCP sockets)中 ...

随机推荐

  1. linux中编译git时提示找不到ssl&period;h头文件

    在centos中的解决方案是安装一个叫 openssl-devel 的包.

  2. linux源代码阅读笔记 linux文件系统(三)

    当系统申请一个新的inode时.系统并不会对磁盘进行读写.它会在存储在内存的inode表(inode_table)中寻找一个空闲的位置. 如果找到了,直接返回该inode.否则要等待一个空闲的位置. ...

  3. Nginx&plus;FastCGI&plus;C

    http://flandycheng.blog.51cto.com/855176/858946 http://www.cnblogs.com/xiaouisme/archive/2012/08/01/ ...

  4. Java对象与Json之间的转换

    使用Jackson的ObjectMapper对象的readValue和writeValueAsString方法可以进行转换. 对于简单基本类型或String类型的对象,使用上述方法可以满足. 但是如果 ...

  5. PULL生成XML文件

    package xmlpulldemo; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...

  6. Java -- sleep and wait

    1.二者的来源 sleep(),是Thread下面的静态方法/静态本地方法. wait(),是Object()的final方法. 2.源码分析 a.sleep() public static void ...

  7. SQL中的左连接与右连接有什么区别&comma;点解返回值会不同&quest;&lpar;转&rpar;

    例子,相信你一看就明白,不需要多说 A表(a1,b1,c1) B表(a2,b2) a1 b1 c1 a2 b2 01 数学 95 01 张三 02 语文 90 02 李四 03 英语 80 04 王五 ...

  8. Android百分比布局支持库(android-percent-support)

    Android中提供了五种布局,其中用的最多的就是:LinearLayout, RelativeLayout 和 FrameLayout这三种布局,在对某一界面进行布局时最先想到也是通过这三种来布局的 ...

  9. React-router v4教程

    在这个教程里,我们会从一个例子React应用开始学习react-router-dom.其中你会学习如何使用Link.NavLink等来实现跳转,Switch和exact实现排他路由和浏览器路径历史. ...

  10. Mysql Window 解压版 忘记密码

    1. 首先检查mysql服务是否启动,若已启动则先将其停止服务,可在开始菜单的运行,使用命令: net stop mysql 打开第一个cmd1窗口,切换到mysql的bin目录,运行命令: mysq ...