热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Spark高速入门指南(QuickStartSpark)

版权声明:本博客已经不再更新。请移步到Hadoop技术博客:https:www.iteblog.comhttps:blog.csdn.netw39709
版权声明:本博客已经不再更新。请移步到Hadoop技术博客:https://www.iteblog.com https://blog.csdn.net/w397090770/article/details/32699893

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

1scala> textFilval textFile = sc.textFile("file:///spark-bin-0.9.1/README.md")
2textFile:org.apache.spark.rdd.RDD[String]=MappedRDD[3]at textFile at :1

  RDDs提供actions操作。通过它能够返回值。同一时候还提供 transformations操作,通过它能够返回一个新的RDD的引用。例如以下:

1scala> textFile.count() // Number of items in this RDD
2res1: Long = 108
3 
4scala> textFile.first() // First item in this RDD
5res2: String = # Apache Spark

我们再试试transformations操作,以下的样例中我们通过使用filter transformation来一个新的RDD:

1scala> val linesWithSpark = textFile.filter(line => line.contains("Spark"))
2linesWithSpark: org.apache.spark.rdd.RDD[String] = FilteredRDD[4] at
3filter at :14

我们将transformations操作和actions操作连起来操作:

1scala> textFile.filter(line => line.contains("Spark")).count()
2res3: Long = 15
很多其它关于RDD上面的操作

  RDD的transformations操作和actions操作能够用于更复杂的计算。以下的样例是找出README.md文件里单词数最多的行有多少个单词

1scala> var size = textFile.map(line=>line.split(" ").size)
2scala> size.reduce((a, b)=>if (a > b) a else b)
3res4: Long = 15

map函数负责将line依照空格切割,并得到这行单词的数量,而reduce函数将获取文件里单词数最多的行有多少个单词。map和reduce函数的參数是Scala的函数式编程风格。我们能够直接用Java里面的Math.max()函数,这样会使得这段代码更好理解

1scala> import java.lang.Math
2import java.lang.Math
3 
4scala> textFile.map(line => line.split(" ").size).reduce((a, b)=>Math.max(a, b))
5res10: Int = 15

我们比較熟悉的一种数据流模式是MapReduce。Spark能够非常easy地实现MapReduce流

1scala> val wordCounts = textFile.flatMap(line => line.split(" "))
2    .map(word => (word, 1)).reduceByKey((a, b) => a + b)
3wordCounts: org.apache.spark.rdd.RDD[(String, Int)] =
4MapPartitionsRDD[16] at reduceByKey at :15

在上面的代码中,我们结合了flatMap,map和reduceByKey等transformations 操作来计算文件里每一个单词的数量。并生成一个(String, Int) pairs形式的RDD。为了计算单词的数量。我们能够用collect action来实现:

01scala> wordCounts.collect()
02res11: 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), (`.,1), (Or,,1), (``,1),
07(About,1), (project's,3), (``,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存入到缓存中:

1scala> linesWithSpark.cache()
2res12: org.apache.spark.rdd.RDD[String] =FilteredRDD[4] at filter at :14
3 
4scala> linesWithSpark.count()
5res13: Long = 15
6 
7scala> linesWithSpark.count()
8res14: 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 


转:https://www.cnblogs.com/ldxsuanfa/p/10704186.html



推荐阅读
author-avatar
闹剧-豆腐渣_141
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有