机器学习(三)--- scala学习笔记

简介:

 Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言、并集成面向对象编程函数式编程的各种特性。

   Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法

一、scala学习       

       2. scala函数式编程

二、spark学习

       1. spark API编程。

 

       spark算子分为两种,transformation和action。transformation是根据先有的rdd经过运算得到新的rdd,而action则是在数据集上进行运算后,返回一个值。而且Spark中所有的transformation都是惰性的,只有在一个action要求返回结果时才会进行计算。

       

       2. RDD的宽依赖和窄依赖:

        Spark Transformations&Actions 操作学习汇总: https://github.com/china1000/learn_spark.Git

 

转换(Transformations)

Transformation

Meaning

map(func

返回一个新的分布式数据集,由每个原元素经过func函数转换后组成

filter(func)

返回一个新的数据集,由经过func函数后返回值为true的原元素组成

flatMap(func)

类似于map,但是每一个输入元素,会被映射为0到多个输出元素(因此,func函数的返回值是一个Seq,而不是单一元素)

sample(withReplacementfrac,seed)

根据给定的随机种子seed,随机抽样出数量为frac的数据

union(otherDataset)

返回一个新的数据集,由原数据集和参数联合而成

groupByKey([numTasks])

在一个由(K,V)对组成的数据集上调用,返回一个(K,Seq[V])对的数据集。注意:默认情况下,使用8个并行任务进行分组,你可以传入numTask可选参数,根据数据量设置不同数目的Task(groupByKey和filter结合,可以实现类似Hadoop中的Reduce功能)

reduceByKey(func, [numTasks])

在一个(K,V)对的数据集上使用,返回一个(K,V)对的数据集,key相同的值,都被使用指定的reduce函数聚合到一起。和groupbykey类似,任务的个数是可以通过第二个可选参数来配置的。

join(otherDataset, [numTasks])

在类型为(K,V)和(K,W)类型的数据集上调用,返回一个(K,(V,W))对,每个key中的所有元素都在一起的数据集

groupWith(otherDataset, [numTasks])

在类型为(K,V)和(K,W)类型的数据集上调用,返回一个数据集,组成元素为(K, Seq[V], Seq[W]) Tuples。这个操作在其它框架,称为CoGroup

cartesian(otherDataset)

笛卡尔积。但在数据集T和U上调用时,返回一个(T,U)对的数据集,所有元素交互进行笛卡尔积。

sortByKey([ascendingOrder])

在类型为( K, V )的数据集上调用,返回以K为键进行排序的(K,V)对数据集。升序或者降序由boolean型的ascendingOrder参数决定(类似于Hadoop的Map-Reduce中间阶段的Sort,按Key进行排序)

Actions(动作)

Action

Meaning

reduce(func

通过函数func聚集数据集中的所有元素。Func函数接受2个参数,返回一个值。这个函数必须是关联性的,确保可以被正确的并发执行

collect()

在Driver的程序中,以数组的形式,返回数据集的所有元素。这通常会在使用filter或者其它操作后,返回一个足够小的数据子集再使用,直接将整个RDD集Collect返回,很可能会让Driver程序OOM

count()

返回数据集的元素个数

take(n)

返回一个数组,由数据集的前n个元素组成。注意,这个操作目前并非在多个节点上,并行执行,而是Driver程序所在机器,单机计算所有的元素(Gateway的内存压力会增大,需要谨慎使用)

first()

返回数据集的第一个元素(类似于take(1))

saveAsTextFile(path)

将数据集的元素,以textfile的形式,保存到本地文件系统,hdfs或者任何其它hadoop支持的文件系统。Spark将会调用每个元素的toString方法,并将它转换为文件中的一行文本

saveAsSequenceFile(path)

将数据集的元素,以sequencefile的格式,保存到指定的目录下,本地系统,hdfs或者任何其它hadoop支持的文件系统。RDD的元素必须由key-value对组成,并都实现了Hadoop的Writable接口,或隐式可以转换为Writable(Spark包括了基本类型的转换,例如Int,Double,String等等)

foreach(func

在数据集的每一个元素上,运行函数func。这通常用于更新一个累加器变量,或者和外部存储系统做交互

 

       2. Spark 架构设计与编程模型

                                              

       3. Spark并发编程

       4. Spark 基础知识

参考文献:

    1. Spark 一个高效的分布式计算系统: http://tech.uc.cn/?p=2116

本文转自博客园知识天地的博客,原文链接:机器学习(三)--- scala学习笔记,如需转载请自行联系原博主。

相关文章
|
1月前
|
机器学习/深度学习 存储 监控
使用Scala编写控制局域网上网软件的机器学习算法
在当今数字化世界中,对于使用控制局域网上网软件控制上网活动的需求越来越迫切。无论是家庭、学校还是企业,都需要有效的方法来监控和管理用户在局域网上的上网行为。本文将介绍如何使用Scala编写机器学习算法来实现这一目标,同时提供一些代码示例来说明具体的实现方式。
102 0
|
5月前
|
机器学习/深度学习 编解码 计算机视觉
Python机器学习和图像处理学习笔记
Python机器学习和图像处理学习笔记
|
10月前
|
机器学习/深度学习 算法 搜索推荐
【吴恩达机器学习笔记】十五、大规模机器学习
【吴恩达机器学习笔记】十五、大规模机器学习
61 0
|
10月前
|
机器学习/深度学习 算法
【吴恩达机器学习笔记】九、机器学习系统的设计
【吴恩达机器学习笔记】九、机器学习系统的设计
66 0
|
10月前
|
机器学习/深度学习 算法
【吴恩达机器学习笔记】八、应用机器学习的建议
【吴恩达机器学习笔记】八、应用机器学习的建议
76 0
|
10月前
|
机器学习/深度学习 算法 前端开发
学习笔记: 机器学习经典算法-集成学习策略
机器学习经典算法-个人笔记和学习心得分享
120 0
|
10月前
|
机器学习/深度学习 算法 Python
学习笔记: 机器学习经典算法-决策树(Decision Tress)
机器学习经典算法-个人笔记和学习心得分享
137 0
|
10月前
|
机器学习/深度学习 资源调度 算法
学习笔记: 机器学习经典算法-核SVM(KernelSVM)
机器学习经典算法-个人笔记和学习心得分享
83 0
|
10月前
|
机器学习/深度学习 资源调度 算法
学习笔记: 机器学习经典算法-线性SVM(LinearSVM)
机器学习经典算法-个人笔记和学习心得分享
91 0
|
10月前
|
机器学习/深度学习 算法
学习笔记: 机器学习经典算法-空间内一点到超平面的距离推广公式
机器学习经典算法-个人笔记和学习心得分享
90 0

热门文章

最新文章