本课内容
1.Map和Tuple在Spark源码中的鉴赏
2.Map和Tuple代码操作实战
 ------------------------------------------------------------------------------------------------------------------------
/**
 *  Scala中最常见的两种数据结构:Map 和 Tuple
 *  
 *  Map初步感受就是key,value方式,key即是值的索引,排列非常规按照Hash的方式,
 *  不是说插入了3个元素后第4个就在第3个后面。它可能第4个元素就在第2个后面(因为hashcode排在第2后面)
 *  
 *  为什么说Map的key,value类型非常重要:最原始,最基础,最常用的数据结构。map中的key就是内容
 *  value的名字,如有有海量的数据,基于map检索速度非常快(数组则非常慢,尤其是修改的时候),从计算机
 *  运行的效率来讲,我们也需要这种数据结构
 *  
 *  Tuple是Scala相比JAVA中特有的一种数据结构,前面无论谈什么数据结构(Map,数组,list)这些都有
 *  具体的数据类型,但在现实社会中我们要表达一种观点,这个观点就是有不同的数据类类型放在一个集合里面。
 *  
 *  Array数组它的类型必须是一致的,要么是这个类型或者这个类型的子类型实例。而Tuple是不拘一格的,非常大
 *  的跃进。
 *  
 * 1.默认情况下Map构造的是不可变的集合,里面的内容不可修改,一旦修改就变成新的Map,原有的Map内容保持不变
 * 2.Map的实例是调用工厂模式apply来构造Map实例,而需要注意的是Map是接口,在apply中使用了具体的实现
 * 3.如果想直接new出Map实例,则需要使用HashMap等具体的Map子类
 * 4.查询一个Map中的值一定是采用getOrElse的语法的,一方面是在key不存在的情况下不报异常,另外还有一个
 * 神奇的作用就是提供默认值,而关于默认值提供在实际开发中至关重要,在Spark中很多默认的配置都是通过getOrElse
 * 的方式来实现的
 * 
 * 5.使用SortedMap可以得到排序的Map集合
 * 6.LinkedHashMap可以记住插入的数据的顺序,
 * 
 * 7.Tuple中可以有很多不同的数据("zhangs","male",30)
 * 8.在企业级实际开发大数据的时候一定会反复的使用Tuple来表达数据结构,以及使用Tuple来处理业务逻辑
 * 9.Tuple的另外一个非常重要的使用时作为函数的返回值,在Tuple中返回若干个值,以SparkContext源码为例来说明
 * // Create and start the scheduler
 *  val (sched,ts) = SparkContext.createTaskScheduler(this,master)
 *  _schedulerBackend = sched
 *  _taskScheduler = ts
 */
---------------------
作者:张涵钧
来源:CSDN
原文:https://blog.csdn.net/shunhack/article/details/52587837
版权声明:本文为博主原创文章,转载请附上博文链接!

Scala实战高手****第8课:零基础实战Scala最常用数据结构Map和Tuple及Spark源码鉴赏的更多相关文章

  1. Scala实战高手****第12课:Scala函数式编程进阶(匿名函数、高阶函数、函数类型推断、Currying)与Spark源码鉴赏

    /** * 函数式编程进阶: * 1.函数和变量一样作为Scala语言的一等公民,函数可以直接赋值给变量 * 2.函数更常用的方式是匿名函数,定义的时候只需要说明输入参数的类型和函数体即可,不需要名称 ...

  2. Scala高手实战****第20课:Scala提取器、注解深度实战详解及Spark源码鉴赏

    Spark中的源码的提取器和注解 @SparkContext.scala @ volatile 线程专用 保证线程间共享内容的一致性 @volatile private var _dagSchedul ...

  3. Scala实战高手****第16课:Scala implicits编程彻底实战及Spark源码鉴赏

    隐式转换:当某个类没有具体的方法时,可以在该类的伴生对象或上下文中查找是否存在隐式转换,将其转换为可以调用该方法的类,通过代码简单的描述下 一:隐式转换 1.定义类Man class Man(val ...

  4. Scala实战高手****第9课:Scala类和对象彻底实战和Spark源码鉴赏

    scala类和对象 RDD中创建_sc和deps相比java更加的简洁. 在Spark的例如SparkContext.sqlSpark等全局成员在完成实例化. 在唯一实例的时候一般不会去使用伴生对象a ...

  5. Scala高手实战****第19课:Scala的包、继承覆写及Spark源码鉴赏

    1.SparkSession.scala //导入某个类 import scala.beans.Introspector //导入某包下所有的类 import scala.beans._ //导入某包 ...

  6. Scala高手实战****第18课:Scala偏函数、异常、Lazy值编码实战及Spark源码鉴赏

    本篇文章主要讲述Scala函数式编程之偏函数,异常,及Lazy 第一部分:偏函数 偏函数:当函数有多个参数,而在使用该函数时不想提供所有参数(比如函数有3个参数),只提供0~2个参数,此时得到的函数便 ...

  7. Scala实战高手****第15课:Scala类型参数编程实战及Spark源码鉴赏

    1.Scala的类和方法.函数都可以是泛型 2.上界:表示泛型的类型必须是某种类型或者其类型的子类,语法:<: ,对类型进行限定 3.下界:表示泛型的类型必须是某种类型或者其类型的父类,语法:& ...

  8. Scala实战高手****第14课:Scala集合上的函数式编程实战及Spark源码鉴赏

    package com.dt.spark.scala.bascis object Functional_Itearal {   def main(args: Array[String]): Unit ...

  9. Scala实战高手****第13课:Scala模式匹配实战和Spark源码鉴赏

    package com.dt.spark.scala.bascis class Dataframework case class Computerframework (name:String,popu ...

随机推荐

  1. jquery处理鼠标左中右键事件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. Windows下安装Mycat

    Mycat 首先在安装Mycat之前,需要安装JDK1.7以上,可以在cmd环境下输入 java -version 查看本地安装的java版本 如果未安装或者版本在1.7以下,请重新安装. 安装JDK ...

  3. HDU1016 素数环---(dfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1016 Sample Input 6 8   Sample Output Case 1: 1 4 3 2 5 6 ...

  4. 如何让 linux unzip 命令 不输出结果

    unzip xx.zip > /dev/null 2>&1 unzip xx.zip > /dev/null前半部分是将标准输出重定向到空设备, 后面的2>&1 ...

  5. 基于多线程的TCP socket通信经典案例

    服务器端 package com.thinkvenus.study.socket; import java.io.BufferedReader; import java.io.IOException; ...

  6. mongoDB的文档查询

    1.简单查询: find() 方法以非结构化的方式来显示所有文档. 语法 MongoDB 查询数据的语法格式如下:      collection是集合名字,注意应该是当前数据库的集合,collect ...

  7. 5.flask知识点补充

    1.WTForms表单验证基本使用 flask-wtf是一个简化了WTForms操作的一个第三方库,WTForms表单的两个主要的功能jiushi就是验证用户提交数据的合法性以及渲染模板.当然还包括其 ...

  8. DRF视图集的使用

    # 原创,转载请留言联系 如果要把同一种http请求方法的多个接口放在同一个视图中,比如:查询多条数据和一条数据都是get请求,放在同一个视图里,应该怎么做呢??? 如果直接放在一起,会怎样呢? # ...

  9. 使用chardet模块判断网页编码

    import chardet import urllib.request url='http://stock.sohu.com/news/' html = urllib.request.urlopen ...

  10. cmake 同时编译多个cpp文件

    cmake_minimum_required(VERSION 2.8) project(coding) file(GLOB_RECURSE EXTRA_FILES */*) add_custom_ta ...