Scala/Spark
沈子恒
计算机视觉 自然语言处理 推荐系统 架构设计
展开
-
[scala-spark]1. Spark vs Hadoop 及 基础
1. Spark与Hadoop2. MapReduce的基本计算过程与之相对比的是Spark往往在一个内存的物理节点完成计算(主要用内存,Shuffle的时候也用到磁盘)。很多操作,比如说单纯的map操作,没有reduce操作;或者Filter类的操作,都可以基于内存进行计算。MR的计算模型相比较,非常固定,而且死板。必须基于磁盘,以及大量的网络传输。所以,spark的速度...原创 2019-09-22 11:12:56 · 442 阅读 · 0 评论 -
[scala-spark]11. RDD控制操作
Spark可以将RDD持久化到内存或者磁盘,持久化到内存可以极大的提高迭代计算以及计算模型之间的数据共享,一般情况下,执行节点60%内存用于缓存数据,剩下40%用于运行任务。Spark使用persist、cache进行操作持久化,其中cache是persist的特例。cache():RDD[T] persist():RDD[T] persist(level:StorageLevel):RD...原创 2019-09-23 01:11:33 · 531 阅读 · 0 评论 -
[scala-spark]10. RDD转换操作
RDD提供了一组非常丰富的操作来操作数据,如:map,flatMap,filter等转换操作,以及SaveAsTextFile,conutByKey等行动操作。这里仅仅综述了转换操作。mapmap是对RDD中的每一个元素都执行一个指定的函数来产生一个新的RDD,RDD之间的元素是一对一的关系。val rdd1: RDD[Int] = sc.parallelize(1 to 9, 3)...原创 2019-09-23 01:05:13 · 2394 阅读 · 0 评论 -
[scala-spark]9. RDD创建操作
1.从集合创建RDDparallelizedef parallelize[T](seq: Seq[T], numSlices: Int = defaultParallelism)(implicit arg0: ClassTag[T]): RDD[T]目的:从一个Seq集合创建RDD参数1:Seq集合,必须参数2:分区数,默认为该Application分配到的资源的CPU核数s...转载 2019-09-23 00:28:50 · 1440 阅读 · 0 评论 -
[scala-spark]8. RDD的实现和编程接口
1. RDD的实现作业调度当对RDD执行“转换操作”时,调度器(DGAScheduler)会根据RDD的血统来构建由若干调度阶段(State)组成的有向无环图(DAG),每个调度阶段包含尽可能多的连续“窄依赖”转换。调度器按照有向无环图顺序进行计算,并最终得到目标RDD。调度器(TaskScheduler)向各节点分配任务采用延时调度机制并根据数据存储位置来确定(数据本地性:移动计算而非...原创 2019-09-23 00:18:13 · 443 阅读 · 0 评论 -
[scala-spark]7. list 与 map
1. listScala 语言中提供的数组是用来存储固定大小的同类型元素,数组对于每一门编辑应语言来说都是重要的数据结构之一。声明数组变量并不是声明 number0、number1、...、number99 一个个单独的变量,而是声明一个就像 numbers 这样的变量,然后使用 numbers[0]、numbers[1]、...、numbers[99] 来表示一个个单独的变量。数组中某个指定...原创 2019-09-22 23:48:18 · 1473 阅读 · 0 评论 -
[scala-spark]6. 继承与特质trait
1. 继承定义抽象类abstract class Element{ def contents:Array[String]}抽象类的方法没有实现,抽象类的类本身必须被abstract修饰。而方法只要没有实现,它就是抽象的,不需要加abstract。定义无参方法abstract class Element{ def contents:Array[String] def...原创 2019-09-22 23:31:00 · 872 阅读 · 0 评论 -
[scala-spark]5. 伴生类和伴生对象
单例对象与类同名时,这个单例对象被称为这个类的伴生对象,而这个类被称为这个单例对象的伴生类。伴生类和伴生对象要在同一个源文件中定义,伴生对象和伴生类可以互相访问其私有成员。不与伴生类同名的单例对象称为孤立对象。(弥补了Scala中缺少static关键字的缺陷,可以与java无缝对接)import scala.collection.mutable.Map class ChecksumAcc...原创 2019-09-22 23:15:12 · 935 阅读 · 0 评论 -
[scala-spark]4. 函数式编程
1. 几个概念说明在Scala中,方法与函数几乎可以等同(定义 使用 运行机制),只是函数的使用方法更加灵活多样 函数式编程是从编程方式的角度来谈的。函数式编程把函数当成一等公民,充分利用函数、支持函数的多种使用方式(调用)。既可以作为函数的参数使用,也可以将函数赋值给一个变量;此外函数的创建不用依赖类或者对象,而在Java中,函数的创建需要依赖类/抽象类或者接口package com....原创 2019-09-22 22:57:08 · 665 阅读 · 0 评论 -
[scala-spark]3. 变量 数据类型 分支与循环
1. 变量定义与初始化package com.lineshen.chapter2 object variable { def main(args: Array[String]): Unit = { val age: Int = 10 val sal: Double = 10.9 val name: String = "lienshen" val isP...原创 2019-09-22 20:27:53 · 547 阅读 · 0 评论 -
[scala-spark]2. Scala运行原理与源码查看
运行原理韩顺平查看源码package com.lineshen.chapter1object lookSourceCode { def main(args: Array[String]): Unit = { val arr = new Array[String](10) for (item <- arr){ println("item ...原创 2019-09-22 17:28:54 · 708 阅读 · 0 评论 -
[scala-spark]12. RDD行动操作
firstfirst返回RDD中的第一个元素,不排序。scala> var rdd1 = sc.makeRDD(Array(("A","1"),("B","2"),("C","3")),2)scala> rdd1.firstres1: (String, String) = (A,1)countcount返回RDD中的元素数量。scala> var rdd1...原创 2019-09-23 01:21:33 · 886 阅读 · 0 评论