spark入门知识(一)

来源:互联网 发布:网络展示平台 编辑:程序博客网 时间:2024/05/22 17:22

第一篇:scala

注册、登录、云平台
速度比hadoop快100倍

spark平台可以使用的语言

java,scala,python,R
clusters(集群)

 

随着时间不停产生的数据——流数据

机器学习:python 和数学基础(考研必学)

GraphX:图,物与物的关系

     

spark用scala开发的

scala:函数式编程(区别于命令式编程、逻辑语言编程)

 

面向对象编程可将前三种语言综合起来

 

学习内容:

1、Mutation(突变、变化)

“引起变化的事物本身保持不变”

买scala教程

2、>scala 命令行
3、spark是一步一步进行计算的

      def 相当于宏定义

4、最后一条语句是返回类型(即返回类型可省略)

 

 

评估函数:求左边的参赛(从左到右),进行原样替换。形式参数用实际参数替换

call-by-value:

先求参数值,再将值赋给变量(缺点:对不存在的变量,进行了多余到了计算)

call-by-name:

x出现的时候在进行计算(先不计算整体带入)

eg:test(x:Int,y:Int)=x*x

 

x:Int

x:=>Int cbn

谓词:结果只有两种

x=x+1的问题怎么解决
shadow:val x=0

val result={val x=5

x*x

}+x

 

递归-高阶函数(递归的溢出的问题是可以解决的)

 

原样调用 伪递归  不会溢出  堆栈重用

递归函数一定要指明其返回类型(重要)

 

f:Int=>Int 整形到整形的映射的函数

箭头表示cbn

 

高阶函数

匿名函数的调用

sum(f,a,c)=sum(f)(a)(c)

伪递归的定义:最后一次调用一定是自己,不能加,不能乘

作用:用替换法替换

 

----------------------------------------------------

在网页上开发,或者在linix下


spark入门知识
[服务器]具有强大功能的pc(2-3万)
特点:价格高,硬件好
[机架}放满服务器(集群)
[hadoop]分布式存储系统(一张照片分成多分放到不同的机器上,主要针对大文件)
切割最少64M

spark contect (sc)负责把数据进行切分
数据分布以后叫RDD(保持不变)

distData.filter(_<10).collect()过滤掉>10的
数据在内存里面,所以很快。
不要汇总(会很慢)

从日志里面读取大量的信息
val lines=sc.textFile("hdfs://...“) //hdfs为分布式文件系统hadoop
val errors = lines.filter(_.startWith("ERROR")) //起始字母是不是error
//_.代表每一行,看每一行是否有错(_代表数据中的每一个)
//RDD的过滤方法,用一个谓词进行判断
val messages=errors.map(_.split("\t")).map(r=>r(1))//对每一个数据调用map方法
//split是分割的意思,有\t来分割
//hello=>hello(1)
//1、RDD为lines 文中的每一行
//2、RDD为errors 文中出现错误的行
//3、RDD为messags 错误的行中每个单词出现的次数
messages.cache() //放到内存,缓存起来

messages.filter(_.contains("mysql")).count() //在meessage里面找"mysql".不用去重
//4、RDD为只有mysql这个单词了,
//count()计数:数RDD中所有元素的个数
messages.filter(_.contains("php")).count()
//找一个日志文件 ,加载进去,把代码试一遍

理论知识:
spark与管理者
在每个节点的跑的程序叫worker
管理机器上跑的程序叫diver
diver驾驭了worker
map、reduce、filter(过滤 )在worker上面运行
sc在diver上面运行

把数据分发给不同的节点由 diver来完成
每个节点上分到了一部分数据
做filter时,每个节点都在进行
count()就是每个节点过滤完之后,再进行的汇总

spark两类型的函数、操作
transform/action
有一个RDD变成另一个RDD,叫做transform
(旧RDD保持不变)

filter 属于transform
一段数据上可以做很多次transform
transform结束后得到了一堆数据
对数据的处理叫做action,以得到结果

count属于action ,得到一个值
数据挖掘:经过无数次的transform,完了之后再施加action,得到想要的结果

程序收到一个action之后才会行动
接受命令的时候保持命令,action个才可以启动命令
(为了让各个节点同时进行)
(把清单列出来,一次全部行动)
2016/7/12


0 0
原创粉丝点击