Scala - Spark Lambda“goesto“ => 分析
/// 定义一个函数AddNoise,参数分别为rdd,Fraction。其中rdd为(BreezeDenseMatrix, BreezeDenseMatrix)元组构成的RDD。Fraction为一个Double。返回一个(BreezeDenseMatrix, BreezeDenseMatrix)元组构成的RDD。
def AddNoise(rdd: RDD[(BDM[Double], BDM[Double])], Fraction: Double): RDD[(BDM[Double], BDM[Double])] = {
/// 定义返回值临时储存,它由rdd中每个元素实现f=>STH构成
val addNoise = rdd.map { f =>
/// f中第二部分数据,为一个BreezeDenseMatrix
val features = f._2
/// 生成一个BreezeDenseMatrix,由随机数填充
val a = BDM.rand[Double](features.rows, features.cols)
/// 定义一个BreezeDenseMatrix a1,其中元素为bool型。如果a中对应元素大于Fraction,则为true。否则为false。
val a1 = a :>= Fraction
/// 定义一个RDD d1,由a1中元素经过如下运算后填充:如果当前元素为true,则为1.0,否则为0。
val d1 = a1.data.map { f => if (f == true) 1.0 else 0.0 }
/// 新建一个BreezeDenseMatrix,分别由于features相应位置对应的d1元素填充。
val a2 = new BDM(features.rows, features.cols, d1)
/// :*表示各元素依次相乘。得到BreezeDenseMatrix。
val features2 = features :* a2
/// 返回(BreezeDenseMatrix,BreezeDenseMatrix)构成的RDD。作为函数返回值,进而更新addNoise。
(f._1, features2)
}
/// 返回运算后的结果,作为函数返回值。
addNoise
}
这段代码是用Scala写的运行与Spark上的,NN算法中AddNoise实现。用来完成DenoiseAutoencoder的随机噪声添加。
思想很简单,但却把Spark的map操作和Scala的lambda运算符的用法展现的淋漓尽致,值得学习。
代码来自sunbow0。
个人分析,有误请指正。
Scala - Spark Lambda“goesto“ => 分析的更多相关文章
- Spark 的情感分析
Spark 的情感分析 本文描述了基于 Spark 如何构建一个文本情感分析系统.文章首先介绍文本情感分析基本概念和应用场景,其次描述采用 Spark 作为分析的基础技术平台的原因和本文使用到技术组件 ...
- Spark源码分析环境搭建
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3868718.html 本文主要分享一下如何构建Spark源码分析环境.以前主要使用eclipse来阅读源 ...
- spark JavaDirectKafkaWordCount 例子分析
spark JavaDirectKafkaWordCount 例子分析: 1. KafkaUtils.createDirectStream( jssc, String.class, String.c ...
- Spark SQL 源代码分析之 In-Memory Columnar Storage 之 in-memory query
/** Spark SQL源代码分析系列文章*/ 前面讲到了Spark SQL In-Memory Columnar Storage的存储结构是基于列存储的. 那么基于以上存储结构,我们查询cache ...
- Spark源码分析之Spark Shell(下)
继上次的Spark-shell脚本源码分析,还剩下后面半段.由于上次涉及了不少shell的基本内容,因此就把trap和stty放在这篇来讲述. 上篇回顾:Spark源码分析之Spark Shell(上 ...
- 【转】Spark源码分析之-deploy模块
原文地址:http://jerryshao.me/architecture/2013/04/30/Spark%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E4%B9%8B- ...
- Spark源码分析 – BlockManager
参考, Spark源码分析之-Storage模块 对于storage, 为何Spark需要storage模块?为了cache RDD Spark的特点就是可以将RDD cache在memory或dis ...
- Spark源码分析 – Deploy
参考, Spark源码分析之-deploy模块 Client Client在SparkDeploySchedulerBackend被start的时候, 被创建, 代表一个application和s ...
- Spark源码分析 – SparkContext
Spark源码分析之-scheduler模块 这位写的非常好, 让我对Spark的源码分析, 变的轻松了许多 这里自己再梳理一遍 先看一个简单的spark操作, val sc = new SparkC ...
随机推荐
- 【leetcode】3Sum
3Sum Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find a ...
- Maven发布web项目到tomcat
在java开发中经常要引入很多第三方jar包:然而无论是java web开发还是其他java项目的开发经常会由于缺少依赖包引来一些不必要的异常.常常也是因为这样的原因导致许多简单的缺包和版本问题耗费大 ...
- delphi 换行操作 Word
delphi 换行操作 我将我的商用<旅行社管理系统>的 发团通知 部分奉献给您,望对您有所帮助. procedure TFrmMain.N327Click(Sender: TObject ...
- 2.python基础深入(元组、字符串、列表、字典)
一,对象与类 对象: python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,玩的手机就是对象. 我们通过描述属性(特征)和行为来描述一个对象的. 在python中,一个对象的特 ...
- 有关GPU硬件的理解
1 显卡的DRAM相当于CPU的RAM (Random access memory, 内存). 二者共同的特点是通电的时候才能使用,不正常断电数据就丢失,但正常情况下,会将数据存储到硬盘中.显存又称帧 ...
- onItemClick 参数解释
X, Y两个listview,X里有1,2,3,4这4个item,Y里有a,b,c,d这4个item.如果你点了b这个item.如下:public void onItemClick (AdapterV ...
- linux网络编程_1
本文属于转载,稍有改动,以利于学习. (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个 ...
- 学SEO你其实只需要半个钟
网站上线之前: 关键词的分析以及选择: 关键词在我们网站的每个页面:首页,栏目页,文章都存在,它定位了你的网站的这个页面是做什么的,有什么内容,也是SEO中的最重要的部分. 网站必须确定并且设置好关键 ...
- Java Hour 16 来个CURD吧!
有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. 突然想到我最近一直在追的小说,作者每天都会更新两章,而且质量挺高.所以从这篇开 ...
- [杂]SQL Server 之 Service Broker
由于某些原因,我们的缓存依赖于数据库,而数据库反向通知需要依赖和使用ServiceBroker, 由于Deploy的人往往不是很清楚这个SB需要如何部署,特此记录. 判断数据库是否启用了Service ...