先测试搭好的spark集群:

本地模式测试:

在spark的目录下:

./bin/run-example SparkPi 10 --master local[2]

验证成功:

集群模式 Spark Standalone:

spark-shell --master yarn-client  集群模式Spark Standalone

验证成功:

集群模式 Spark on Yarn集群上yarn-cluster模式:

./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster examples/jars/spark-examples_2.11-2.0.2.jar 10

实现一个wordcount将文件导入scala中:

先尝试一下map函数,map不改变数据的结构,但可以对数据进行操作

相当于对每个值,做了乘2的操作。

用空格分隔

将每一行用空格做分隔。

简化,_是通配符,代表每个x

将map之后的数据打平,等价于 lines.map(x=>x.split(" ")).flatten

将每个单词后面加一个“1”字符,

groupby操作

从tuple(forgotten,1)中把第一个单词提出来forgotten作为key,
把整个tuple作为value,收集到一个list中
这样对应的value是一个list里面包含所有对应key的tuple
例:
_1:forgotten -> _2:List((forgotten,1), (forgotten,1), (forgotten,1))
整个list大小就是对应key:forgotten出现的次数

下方的map(x=>(x._1,x._2.length)) 只能用这种形式因为是两个tunple.当中的length也可换成size.

如果不通过list大小来算具体单词的次数(词频):

要将map中读的list中的第二个值相加.,也可以把sum改成reduce(_+_)

reduce(_+_)计算原理:
 List(1, 1, 1) ((1+1)+1)
 sum += x

按数字反向排序:

取前三个:

其他方法:

lines.flatMap(_.split(" "))
.map((_,1))
.groupBy(_._1)
.mapValues(_.size)
返回的是一个Map(dict),key:单词,value:词频 lines.flatMap(_.split(" "))
.map((_,1))
.groupBy(_._1)
.mapValues(_.size)
.toArray
.sortWith(_._2>_._2)
.slice(0,10) sortBy(_._2).reverse == sortWith(_._2>_._2)
_._2表示按照第二个进行排序

mkString(拼接字符串)

正则去取多余的符号

正则:
python import re
p = r'[0-9]+'
p.findall(s)这个是一个数组
p.findall(s)[0] scala:
val p = "[0-9]+".r
val s = "546465sfgidg"
p.findAllIn(s)是一个迭代器
p.findAllIn(s).toArray 将迭代器转为数组形式. p.findAllIn(s).foreach(x=>println(x))
foreach也是扫一遍数据 p.findAllIn(s).mkString("") #变成字符串
mkString("[","","]")
取标点,只取数字和字符
val p = "[0-9a-zA-Z]+".r
lines.flatMap(_.split(" "))
.map(x=>(p.findAllIn(x).mkString(""),1))
.groupBy(_._1)
.mapValues(_.size)
.toArray
.sortWith(_._2>_._2)
.slice(0,10) lines.flatMap(_.split(" ")).map(x=>(p.findAllIn(x).mkString(""),1))

fold函数:

def f(){}
lines.map(f) a.foldLeft(0)(_+_) sum = 0
for i in a:
sum += i
return sum tuple求和
sum = 0
for i in a:
sum += i[1] #1相当于第二个值,相当于scala中的_.__2
return sum a.foldLeft(0)(_+_._2) #_._2是第二个,0没有变.0相当于sum=0

map的嵌套操作;

spark-1的更多相关文章

  1. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

  2. Spark RDD 核心总结

    摘要: 1.RDD的五大属性 1.1 partitions(分区) 1.2 partitioner(分区方法) 1.3 dependencies(依赖关系) 1.4 compute(获取分区迭代列表) ...

  3. spark处理大规模语料库统计词汇

    最近迷上了spark,写一个专门处理语料库生成词库的项目拿来练练手, github地址:https://github.com/LiuRoy/spark_splitter.代码实现参考wordmaker ...

  4. Hive on Spark安装配置详解(都是坑啊)

    个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/p/a7f75b868568 简介 本文主要记录如何安装配置Hive on Sp ...

  5. Spark踩坑记——数据库(Hbase+Mysql)

    [TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...

  6. Spark踩坑记——初试

    [TOC] Spark简介 整体认识 Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架.最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apach ...

  7. Spark读写Hbase的二种方式对比

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 一.传统方式 这种方式就是常用的TableInputFormat和TableOutputForm ...

  8. (资源整理)带你入门Spark

    一.Spark简介: 以下是百度百科对Spark的介绍: Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方 ...

  9. Spark的StandAlone模式原理和安装、Spark-on-YARN的理解

    Spark是一个内存迭代式运算框架,通过RDD来描述数据从哪里来,数据用那个算子计算,计算完的数据保存到哪里,RDD之间的依赖关系.他只是一个运算框架,和storm一样只做运算,不做存储. Spark ...

  10. (一)Spark简介-Java&Python版Spark

    Spark简介 视频教程: 1.优酷 2.YouTube 简介: Spark是加州大学伯克利分校AMP实验室,开发的通用内存并行计算框架.Spark在2013年6月进入Apache成为孵化项目,8个月 ...

随机推荐

  1. gzip 所使用压缩算法的基本原理(选摘)

    摘自:http://blog.csdn.net/ghevinn/article/details/45747465  gzip 所使用压缩算法的基本原理 gzip 对于要压缩的文件,首先使用LZ77算法 ...

  2. Cordova使用极光推送的方法

    1.在极光推送官网注册账号.应用,注意注册的包名要和app的包名一致 2.添加插件 cordova plugin add jpush-phonegap-plugin --variable APP_KE ...

  3. 问题 Duplicate entry '0' for key 'PRIMARY'

    今天使用了触发器,在一个表中执行增删改操作,然后在另一个表中执行相应的记录时,出现了这个问题 其实这个问题应该算是细节问题,有两种情况: 1.就是在插入数据的时候将id设置为not nul但是在插入数 ...

  4. ARP【地址解析协议】理解

    今天是来公司的第二个周一,早上收到Boss抄送的邮件说网段之间无法通信,心想现在还不太懂这个原理,于是就在网络上搜罗了一下资料,作此整理(大部分文字内容来自网络) 1. 同网段和不同网段设备通信原理详 ...

  5. 3.4 unittest之装饰器(@classmethod)

    3.4 unittest之装饰器(@classmethod) 前言前面讲到unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用例 ...

  6. linux command 2

    #修改文件所有权为user group chown user:group file/group 根据:的位置判断是修改所有者还是组 #修改文件读写执行属性 chmod mask file/group ...

  7. $inject

    function breadcrumb($parse, store) { } // 为了压缩 breadcrumb.$inject = ['$parse', 'breadcrumbStore']

  8. git创建分支并上传仓库

    1. 新建分支 xxx 2.  git pull (目录下 命令行将线上分支拉倒本地) 3. git checkout xxx (切换到到该分支 ) (可使用 git status 查看目前处于哪一个 ...

  9. H5入门须知

    ---恢复内容开始--- 首先,让我们来了解一下H5是做什么的,H5全称为“超文本标记语言”.是对网页进行编辑的技术.H5运用Hbulider进行网页编辑.网页可以分为三部分分别是title(主题)u ...

  10. Vue 移动端常用tap事件封装

    基于Vue的移动端项目,有些时间原生并没用提供,需要我们自己手动封装,可以封装一些自定义指令来供全局使用. 本文封装了 tap, swipe, swipeleft, swiperight, swipe ...