本课内容
1.Spark中Scala集合操作鉴赏
2.Scala集合操作实战
 ------------------------------------------------------------------------------------------------------------------------

/**
 * 大数据技术是数据的集合以及对数据集合的操作技术的统称,具体来说:
 * 1.数据集合:会涉及数据的搜集、存储等,搜集会有很多技术,存储现在比较经典的是使用Hadoop,
 * 也有很多情况使用Kafka(消息中间件,也可以作为存储系统)
 * 2.对数据集合的操作技术:目前全球最火爆的是Spark
 * 
 * Spark的框架实现语言是Scala,首选的应用程序开发语言也是Scala,所以Scala对集合以及集合
 * 操作的支持就至关重要,且必须异常强大
 * 一个补充说明:可能是巧合,Spark中对很多数据的操作算子和Scala中对集合的操作算子是一模一样的,
 * 也就是说你掌握了Scala中集合的操作,基本上就可以直接去开发Spark代码啦,非常美妙
 * 
 * 关于Scala中数据的创建与操作:
 * 1.最最原始的创建数据的方式是形如val array = new Array[Int](5),
 * 指定数组的类型Int且其固定长度是5个
 * 2.对数组元素访问的时候,下标的范围在0到length-1的长度,
 * 超过length-1的话,会出现数组越界异常:java.lang.ArrayIndexOutOfBoundsException
 * 3.最常用和经典的创建数组的方式是形如:Array[Int](1,2,3,4,5),直接通过Array类名并传入参数
 * 的方式来创建数组实例,在背后的实现是调用Array的工厂方法模式apply来构建出数组及数组的内容
 * 4.关于Array本身是在底层的实现是借助了JVM平台上的Java语言的数组的实现,是不可变的
 * 5.如果我们想使用可变数组的话,首先需要导入import scala.collection.mutable.ArrayBuffer,
 * 然后使用ArrayBuffer这个可变数组
 * 6.关于ArrayBuffer增加元素默认情况下都是在ArrayBuffer末尾增加元素的,效率非常高
 * 7.当需要多线程并发操作的时候,把ArrayBuffer转换成Array就非常重要。其实,即使是Array,
 * 其本身虽然不可变动(元素可删减),但我们可以修改Array中每个元素的内容,所以多线程操作的
 * 时候必须考虑并发写的问题,如果是读的话就没关系
 * 8.如果想在已经有的数组的基础上通过作用于每个元素来生成新的元素构成的新数组,
 * 则可以通过yield语法来完成,这在大数据中意义重大:
 * 第一点:它是在不修改已经有的Array的内容的基础上来完成的,非常适合大数据处理
 * 第二点:在大数据中处理中,例如Spark中业务操作的核心思想就类似于yield,来通过
 * function对每个元素操作获得新的元素构成的新的集合,其实就是新的RDD,
 * 例如MapPartionsRDD
 * 9.集合的操作往往可以通过丰富的操作算子,例如filter来过滤需要条件的元素,例如
 * map来进行每一个元素的加工
 * 
 */
---------------------
作者:张涵钧
来源:CSDN
原文:https://blog.csdn.net/shunhack/article/details/52587828
版权声明:本文为博主原创文章,转载请附上博文链接!

Scala实战高手****第6课 :零基础实战Scala集合操作及Spark源码解析的更多相关文章

  1. 机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理、源码解析及测试

    机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理.源码解析及测试 关键字:决策树.python.源码解析.测试作者:米仓山下时间:2018-10-2 ...

  2. Scala实战高手****第4课:零基础彻底实战Scala控制结构及Spark源码解析

    1.环境搭建 基础环境配置 jdk+idea+maven+scala2.11.以上工具安装配置此处不再赘述. 2.源码导入 官网下载spark源码后解压到合适的项目目录下,打开idea,File-&g ...

  3. Scala实战高手****第7课:零基础实战Scala面向对象编程及Spark源码解析

    /** * 如果有这些语法的支持,我们说这门语言是支持面向对象的语言 * 其实真正面向对象的精髓是不是封装.继承.多态呢? * --->肯定不是,封装.继承.多态,只不过是支撑面向对象的 * 一 ...

  4. 「从零单排canal 04」 启动模块deployer源码解析

    基于1.1.5-alpha版本,具体源码笔记可以参考我的github:https://github.com/saigu/JavaKnowledgeGraph/tree/master/code_read ...

  5. Scala实战高手****第5课:零基础实战Scala函数式编程及Spark源码解析

    Scala函数式编程 ----------------------------------------------------------------------------------------- ...

  6. spark源码解析之scala基本语法

    1. scala初识 spark由scala编写,要解析scala,首先要对scala有基本的了解. 1.1 class vs object A class is a blueprint for ob ...

  7. java基础,集合,HashMap,源码解析

    最怕,你以为你懂咯,其实你还不懂: 见贤思齐,看看那些我们习以为常的集合,通过相关定义.源码,思考分析,加深对其的理解,提高编码能力,能做一个略懂的程序员: 做几个我们常用的集合类.开篇HashMap ...

  8. java基础,集合,Arraylist,源码解析(基础)

    ArrayList 是什么,定义? 这是动态的数组,它提供了动态的增加和减少元素,实现了List接口(List实现Collection,所以也实现Collection接口)灵活的设置数组的大小等好处 ...

  9. Scala实战高手****第8课:零基础实战Scala最常用数据结构Map和Tuple及Spark源码鉴赏

    本课内容1.Map和Tuple在Spark源码中的鉴赏2.Map和Tuple代码操作实战 ------------------------------------------------------- ...

随机推荐

  1. How do I use EC2 Systems Manager to join an instance to my AWS Directory Service domain?

    1. Create new role "EC2RoleforSSM" in AWS IAM AWS->IAM->Roles->Create role->Se ...

  2. HTML5之SVG详解(一):基本概括

    转载自:http://www.cnblogs.com/hupeng/archive/2012/12/21/2828456.html 1.背景 SVG是Scalable Vector Graphics的 ...

  3. Spring学习--基于 XML 的配置声明切面

    正常情况下 , 基于注解的生命要优先于基于 XML 的声明. 通过 AspectJ 注解 , 切面可以与 AspectJ 兼容 , 而基于 XML 的配置则是 Spring 专有的.由于 Aspect ...

  4. Extjs3.4 合并单元格

    Ext3.4合并单元格   表格上添加grid-row-span样式

  5. linux基础——磁盘分区和yum安装

    第一部分 1) 开启Linux系统前添加一块大小为15G的SCSI硬盘   2) 开启系统,右击桌面,打开终端   3) 为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1 ...

  6. python进程池pool的starmap的使用

    #!/usr/bin/env python3 from functools import partial from itertools import repeat from multiprocessi ...

  7. 如何生成pyc/pyo/pyd文件

    # 一.如何生成pyc/pyo文件 # 1.通过编写代码生成 import py_compile # 参数如下 ''' def compile(file, cfile=None, dfile=None ...

  8. seleniumu 3.0复选框操作(定位一组元素)

    一般验证复选框是否可以选择点击常用到定位一组元素去循环遍历执行点击事件.但是有时候在不同的浏览器下可能会存在差异化的最终结果. 目前谷歌浏览器常常存在多次点击同一复选框,导致最终最后两项复选框均未被勾 ...

  9. PHP的普通传值与引用传值以及unset

    首先,要理解变量名存储在内存栈中,它是指向堆中具体内存的地址,通过变量名查找堆中的内存; 普通传值,传值以后,是不同的地址名称,指向不同的内存实体; 引用传值,传引用后,是不同的地址名称,但都指向同一 ...

  10. centeros7的redis-cli命令不生效解决方法(亲测)

    如果你已经安装了redis服务器,并且已经启动,但是redis-cli命令无法生效,分析,命令未加入环境变量.那就给redis命令加入环境变量中: 注意点:redis安装目录会有不同,注意下面的PAT ...