先测试搭好的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. @Autowired Map<String , Object> xx

    http://www.cnblogs.com/davidwang456/p/4432410.html @Autowired 标注作用于 Map 类型时,如果 Map 的 key 为 String 类型 ...

  2. Javascript Canvas验证码

    用Canvas画的验证码,效果图如下 1.验证码的JS代码,保存到一个名称是validatedCode.js的文件内,代码如下: (function(window,document){ functio ...

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

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

  4. 导入maven项目导入依赖不会报错,但使用的jar会标红

    方法1: 1.通过编译找到报错的jar; 2.在 repository找到此jar,一般未下载完大小为1k我的是这样(); 3.删除未下载完全的jar,在项目上执行maven reimport会重新下 ...

  5. c++ 网络库

    1.libevent 2.boost::asio 3.ace boost::asio以前看过,不过忘记了 学习,学习

  6. 小妖精的完美游戏教室——东方project,同人,自机

    //================================================================ //// Copyright (C)// All Rights R ...

  7. 关于JVM的一些冷知识

    (1) Java加载类的一般顺序: 1.静态属性,静态方法声明,静态块. 2.动态属性,普通方法声明,构造块. 3.构造方法. 当加载一个类时,JVM会根据属性的数据类型第一时间赋默认值(一举生成的) ...

  8. Vue 表单校验 vee-validate

    gitHub 地址:https://github.com/baianat/vee-validate 官网API 地址:https://baianat.github.io/vee-validate/ap ...

  9. html5-websocket实现基于远程方法调用的数据交互

    html5-websocket实现基于远程方法调用的数据交互   一般在传统网页中注册用户信息都是通过post或ajax提交到页面处理,到了HTML5后我们有另一种方法就是通过websocket进行数 ...

  10. Python3 练习2 列表和字典练习

    找出列表list中大于100的值,给字典dic的k1键,小于等于100的值,给字典dic的k2键 ''' 提示:创建字典的两种方式 ex: ''' v1 = [2,3,4,5,] v2 = 88 di ...