scala flatMap reduceLeft foldLeft】的更多相关文章

object collection_t1 { def flatMap1(): Unit = { val li = List(,,) val res = li.flatMap(x => x match { => List('a','b') ) }) println(res) } def map1(): Unit = { val li = List(,,) val res = li.map(x => x match { => List('a','b') }) println(res)…
1.test.txt文件中存放 asd sd fd gf g dkf dfd dfml dlf dff gfl pkdfp dlofkp // 创建一个Scala版本的Spark Context val conf = new SparkConf().setAppName("wordCount") val sc = new SparkContext(conf) // 读取我们的输入数据 val input = sc.textFile(inputFile) // 把它切分成一个个单词 va…
map,flatMap,zip和reduce函数可以让我们更容易处理列表函数. 1 map函数map将一个函数应用于列表的每一个元素并且将其作为一个新的列表返回.我们可以这样对列表的元素进行平方: scala> list1 res3: List[Int] = List(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) scala> list1.map(x=>x*x) res4: List[Int] = List(0, 1, 4, 9, 16, 25, 36, 49, 6…
Scala:fold,foldLeft和foldRight区别与联系 我们来看看最后一个函数:reduce.使用reduce我们可以处理列表的每个元素并返回一个值.通过使用reduceLeft和reduceRight我们可以强制处理元素的方向.(使用reduce方向是不被保证的)译者注:reduce和fold很像,但reduce返回的值的类型必须和列表的元素类型相关(类型本身或其父类),但fold没有这种限制(但与此同时fold必须给定一个初始值),可以说reduce是fold的一种特殊情况.…
开发中遇到需求:合并两个Map集合对象(将两个对应KEY的值累加) 先说解决方案: ( map1 )) ) } 这特么什么鬼  (╯‵□′)╯""┻━┻☆))>○<) ......莫急,且听我慢慢道来......... 首先: Scala中现有的合并集合操作不能满足这个需求 . 注意合并后的结果a的G02的值其实是被覆盖掉了.. 然后: 说说那个表达式中(a /: b)( ... ) 这部分是什么鬼.这个其实是scala简化的foldLeft函数. 先看foldLeft L…
Scala's object-oriented collections support mutable and immutable type hierarchies. Also support functional higher-order operations such as map, filter, and reduce that let you use expression-oriented programming in collections. Higher-order operatio…
目录[-] 1.   Scala有多cool 1.1.     速度! 1.2.     易用的数据结构 1.3.     OOP+FP 1.4.     动态+静态 1.5.     DSL 1.6.     够复杂 1.7.     够有趣 1.8.     开发社区 2.   lang 2.1.     和Java的异同 2.1.1.  语法 2.1.2.  库 2.2.     变量 2.2.1.  保留字 2.2.2.  变量标识 2.2.3.  变量定义 2.2.3.1     va…
package my.bigdata.scala08 import scala.collection.mutableimport scala.collection.mutable.ArrayBufferimport scala.io.Source /** scala word count * Created by lq on 2017/8/7. */object Task2 { /** * basic 核心是外部变量 + map.getOrElse */ def scalaWC0(): Unit…
集合最重要的继承路线 —— Traversable -> Iterable -> Seq -> LinerSeq -> List Traversable 中的公有方法: 分类 方法 相加操作  ++ 大小信息  isEmpty,nonEmpty,size和hasDefiniteSize 元素测试  exists,forall和count 元素检索  head,last,headOption,lastOption和find 转换操作  toArray,toList,toIterabl…
函数式编程 ​ 并行编程 ​ 多核计算.云计算 ​ 引用透明,给值确定,结果也确定 数据类型 三种变量修饰符 ​ val 定义immutable variable ​ var 定义mutable variable ​ lazy val ​ 可以不显示指定变量的类型,因为scala会自动进行类型推导 默认变量名 res ​ val 定义的值不可改变 根类Any ​ 二层:AnyVal.AnyRef AnyVal=>Numeric types.Boolean.Char.Unit AnyRef=>A…
文章目录 定义返回Future的方法 阻塞方式获取Future的值 非阻塞方式获取Future的值 Future链 flatmap VS map Future.sequence() VS Future.traverse() Future.foldLeft VS Future reduceLeft Future firstCompletedOf Future zip VS zipWith Future andThen 自定义threadpool recover() recoverWith() an…
Traversable vs Iterable Traversable, Iterable 都是trait. Iterable 继承 Traversable. Traversable: 支持foreach. Iterable: 支持Interator方法. Immutable vs mutable Scala的Collection有Immutable和mutable两个大家族. Immutable: 不可变.初始化后不会发生变化.scala的默认collections.性能更好. Mutable…
遍历集合的方法 1.用foreach循环遍历一个集合 foreach接收一个函数作为参数.定义的函数应该接收一个元素作为输入参数,然后不要返回任何的东西.输入的参数的类型应该匹配集合中的类型.随着foreach的执行,它每次都会把一个元素传给你的函数,直到集合中最后一个元素. foreach常用的就是输出信息: scala> val x = Vector(1,2,3) x: scala.collection.immutable.Vector[Int] = Vector(1, 2, 3) scal…
开发中遇到需求:合并两个Map集合对象(将两个对应Key的值累加) 先说解决方案: ( map1 /: map2 ) { )) ) } 首先: Scala中现有的合并集合操作不能满足这个需求 . 注意合并后的结果a的G02的值其实是被覆盖掉了.. 然后: 说说那个表达式中(a /: b)( ... ) 这部分是什么鬼.这个其实是scala简化的foldLeft函数. 先看foldLeft List(,,).foldLeft()((sum,i)=>sum+i) // 红色部分是初始值,蓝色部分是操…
欢迎关注我的新博客地址:http://cuipengfei.me/blog/2014/10/31/spark-fold-aggregate-why-not-foldleft/ 大家都知道Scala标准库的List有一个用来做聚合操作的foldLeft方法. 比方我定义一个公司类: 1 case class Company(name:String, children:Seq[Company]=Nil) 它有名字和子公司. 然后定义几个公司: 1 val companies = List(Compa…
Given that sequence, use reduceLeft to determine different properties about the collection. The following example shows how to get the sum of all the elements in the sequence: scala> a.reduceLeft(_ + _) res0: Int = 64 Don’t let the underscores throw…
针对集合的操作 遍历操作 列表的遍历 scala> val list = List(1,2,3,4,5,6) list: List[Int] = List(1, 2, 3, 4, 5, 6) scala> for (elem <- list) println(elem) 1 2 3 4 5 6 也可以使用foreach进行遍历: scala> val list = List(1,2,3,4,5,6)list: List[Int] = List(1, 2, 3, 4, 5, 6)sc…
说明:掌握spark的一个关键,就是要深刻理解掌握RDD各个函数的使用场景,这样我们在写业务逻辑的时候就知道在什么时候用什么样的函数去实现,得心应手,本文将逐步收集整理各种函数原理及示例代码,持续更新,方便大家学习掌握. 函数列表: 1.join的使用2.cogroup的使用3.GroupByKey的使用4.map的使用5.flatmap的使用6.mapPartitions的使用7.mapPartitionsWithIndex的使用8.sortBy的使用9.takeOrdered的使用10.ta…
reduceLeft神语法 val a = Array(20, 12, 6, 15, 2, 9) 1 2 3 4 5 6 7 8 scala> a.reduceLeft(_ + _)  // 数组求和 res0: Int = 64 scala> a.reduceLeft(_ * _) // 数组求乘积 res1: Int = 388800 scala> a.reduceLeft(_ min _) // 数组求最小值 res2: Int = 2 scala> a.reduceLeft…
第1章 RDD概述 1.1 什么是RDD RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象.代码中是一个抽象类,它代表一个不可变.可分区.里面的元素可并行计算的集合. 1.2 RDD的属性 1) 一组分区(Partition),即数据集的基本组成单位; 2) 一个计算每个分区的函数; 3) RDD之间的依赖关系; 4) 一个Partitioner,即RDD的分片函数; 5) 一个列表,存储存取每个Partition的优先位置(p…
spark-初阶①(介绍+RDD) Spark是什么? Apache Spark 是一个快速的, 多用途的集群计算系统, 相对于 Hadoop MapReduce 将中间结果保存在磁盘中, Spark 使用了内存保存中间结果, 能在数据尚未写入硬盘时在内存中进行运算. Spark的特点(优点) 速度快 Spark 的在内存时的运行速度是 Hadoop MapReduce 的100倍 基于硬盘的运算速度大概是 Hadoop MapReduce 的10倍 Spark 实现了一种叫做 RDDs 的 D…
1 详细信息 User class threw exception: java.lang.IllegalStateException: Cannot call methods on a stopped SparkContext. This stopped SparkContext was created at:   org.apache.spark.SparkContext.<init>(SparkContext.scala:76) com.wm.bigdata.spark.etl.RentO…
第2章 RDD编程(2.3) 2.3 TransFormation 基本RDD Pair类型RDD (伪集合操作  交.并.补.笛卡尔积都支持) 2.3.1 map(func) 返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成 package com.diyo.funtion import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /** * map(func) *…
先从一道题开始看: Eliminate consecutive duplicates of list elements. If a list contains repeated elements they should be replaced with a single copy of the element. The order of the elements should not be changed. Example: scala> compress(List('a, 'a, 'a, 'a…
 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy   访问密码 45e2   以下为第37讲List的foldLeft.foldRight.sort操作代码实战 package com.parllay.scala.dataset /** * Created by richard…
源码分析 def seq: TraversableOnce[A] 上面两段代码是scala.collection.TraversableOnce特质的foldLeft方法源代码,实现了TraversableOnce trait的seq就是可迭代的集合: //将初始值z赋给result变量 var result = z //遍历seq集合,将result变量与seq集合取出的每个对象作为参数传递给op函数,每迭代一次op函数的返回值都赋给result变量 this.seq foreach (x =…
1. map函数   对集合的每一个元素运用某个函数操作,然后将结果作为一个新的列表返回. 实例1:将列表中每个元素值乘以2 scala> val list1=List(1,2,3,4) list1: List[Int] = List(1, 2, 3, 4) scala> list1.map(_*2) res54: List[Int] = List(2, 4, 6, 8) 另一种写法: scala> list1.map(x=>x*2) res55: List[Int] = List…
今天我们来学习一下如何使用for表达式实现map.flatMap以及filter 首先,我们来看下map.map的功能是,传入一个list,通过一个函数f,将list中的元素A变成元素B的过程.最后得到由B形成的列表.这个过程如果由for循环实现的话,如下操作: for(element <- list) yield f(element) 接下来我们看下flatMap.flatMap的功能是,传入一个list,通过一个函数f,将list中的每个元素转换成一个列表,最后返回由这些列表中的所有元素构成…
在函数式语言中,函数作为一等公民,可以在任何地方定义,在函数内或函数外,可以作为函数的参数和返回值,可以对函数进行组合.由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好处主要是不可变性带来的.没有可变的状态,函数就是引用透明(Referential transparency)的和没有副作用(No Side Effect). 任何一种函数式语言中,都有map函数与faltMap这两个函数,比如Python虽然不是纯函数式语言,也有这两个函数.再比如在jdk1.8之后…
转载:https://www.cnblogs.com/wbh1000/p/9846401.html 两者的区别主要在于action后得到的值 例子: import org.apache.spark.{SparkConf, SparkContext} object MapAndFlatMap { def main(args: Array[String]): Unit = { val sc = new SparkContext(new SparkConf().setAppName("map_flat…