先测试搭好的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. java面向对象编程(三)--this

    看一段代码:(Demo112.java),先了解为什么要使用this. /* this的必要性 */ public class Demo112{ public static void main(Str ...

  2. sql中的内联和外联(简单用法)

    有两张表:user和department User表: CREATE TABLE `user` (    `id` int(11) NOT NULL AUTO_INCREMENT,    `name` ...

  3. CSS-精灵图片的使用(从一张图片中截图指定位置图标)

      一.名词解释 在网页中,我们可以看到有很多的小图标,比如微博上的登录位置有很多这样的小图标.因为浏览器显示网页的所有内容都需要从我们自己的服务器进行下载,如果将这些图标分别存在服务器上,那么当需要 ...

  4. c# 如何 使用共用体

    用起来真的方便 转摘如下: C#借助FieldOffset属性实现共用体与强制类型转换 这两天被C#的强制类型转换弄得有点不习惯.事出如此. 在C#中,我打算读二进制文.文件的结构很简单,一连串的紧密 ...

  5. mongo 索引,速度

    (如有打扰,请忽略)阿里云ECS大羊群,2U4G低至1.4折,限实名新用户,需要的点吧https://promotion.aliyun.com/ntms/act/vm/aliyun-group/tea ...

  6. js中this是什么?

    this是js的一个关键字 指定一个对象然后去替代他 分两种情况函数内的this和函数外的this 函数内的this指向行为发生的主体 函数外的this都指向window函数内的this跟函数在哪定义 ...

  7. MyCat配置详解

    MyCAT 配置解析 server.xml Mycat的配置文件,设置账号.参数等schema.xml Mycat对应的物理数据库和数据库表的配置rule.xml Mycat分片(分库分表)规则 一 ...

  8. (27)session(设置值、取值、修改、删除)

    session的由来 Cookie虽然在一定程度上解决了“保持状态”的需求,但是由于Cookie本身最大支持4096字节,以及Cookie本身保存在客户端,可能被拦截或窃取,因此就需要有一种新的东西, ...

  9. java_字段声明

    多字段继承,为避免混淆,simple name与qualified name的使用 package java20180129_1; interface Frob { float v=2.0f; } c ...

  10. 对数据进行GZIP压缩或解压缩

    /** * 对data进行GZIP解压缩 * @param data * @return * @throws Exception */ public static String unCompress( ...