好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现

hadoop   由java实现,2003年至今,三大块:数据处理,数据存储,数据计算

存储: hbase --> 数据成表

处理: hive --> 数据仓库的工具

计算: mapreduce --> 入门级

hive    java实现

flink   流失处理  scala实现  --> 计算引擎

kafka   数据缓存  scala实现

spark scala实现 \ python

DL 4j scala实现

sklearning python实现

akka scala实现  --> 通信

scala发展历程

scala作者:

马丁,函数编程的爱好者,一直在jvm平台上工作

scala的魅力

scala针对spark集群里的spark -shell 进行脚本编程

scala针对IDEA的maven,进行spark的app开发

大数据开发编程思想

1.加载数据集,(基于本地数据,win \ hdfs \ Array)

2.分割数据集,(聚合操作)

3.选择apache框架(处理-Hive,存储-HBSE,计算-mapreduce,)

4.调试,测试代码

5.调优,代码,app,数据倾斜,troubleshooting故障排除

6.上线

val 和 var

val被final修饰,不可以修改变量值

好程序员大数据学习路线分享函数+map映射+元祖-LMLPHP

var可以修改

好程序员大数据学习路线分享函数+map映射+元祖-LMLPHP

java和scala共用jvm,但是思想不一样

scala 数据类型:

scala中,一切类的基类为 Any

第一种:

AnyRef,是Any的子类,是所有的引用类型的基类,所有的继承都来自AnyRef

第二种:

AnyVal,是Any的子类,Byte\Char\Short\int\Long\Float\Double(无包装类)-->七种数据类型,Unit(无返回值类型)\Boolean

条件表达式

块表达式

* 在scala中"{}"中包含一系列的列表达式就形成了块表达式

* 下面就是一个块表达式

* 用lazy关键字来修饰,该代码局就是在调用才运行

printf打印和foreach的使用

arr.toBuffer  -> 变常数组

printf 用法 --> 相当于格式化

好程序员大数据学习路线分享函数+map映射+元祖-LMLPHP

%s  表示字符串

%d  表示数字

 

for循环的三种方式+filter

三种for循环中,to包含最后一位,until不包含

高级for循环 -> 嵌套

关键字yield -> 生成新集合

 

foreach的引用

map方法返回的是一个新的Array,会占用资源,foreach则直接输出结果,不返回数组

函数和方法

----------------------------------定义方法---------------------------------

好程序员大数据学习路线分享函数+map映射+元祖-LMLPHP

没有返回类型不打印结果,除非在方法中print,或者加入默认Unit类型

 

对于递归方法,必须指定返回类型

-----------------------------------定义函数-----------------------------------

好程序员大数据学习路线分享函数+map映射+元祖-LMLPHP

函数的返回值类型不能不写,可以写"()"

 

调用函数:map提供数组

---------------------------方法与函数的区别-----------------------

在函数式编程语言中,函数是“头等公民”,它可以像任何其他数据类型一样被传递和操作

案例:首先定义一个方法,在定义一个函数,然后将函数传递给方法里面

Array数组

数组常用算法

好程序员大数据学习路线分享函数+map映射+元祖-LMLPHP

可变字符串导包 : import scala.collection.mutable.ArrayBuffer

定义集合时 : Array()不可变,ArrayBuffer()可变

导包后的字符串 (可变)

好程序员大数据学习路线分享函数+map映射+元祖-LMLPHP

增加数据

从指定位置增加数据

删除元素

反转

好程序员大数据学习路线分享函数+map映射+元祖-LMLPHP

Map映射

首先导包 : import scala.collection.mutable.Map

定义map集合的两种方法

查看map集

修改map集指定参数

增加map集参数

删除map集参数

循环遍历  (LinkedHashMap \ SortedMap)

---------------------元祖------------------------

小括号括起来的多种类型的值就叫元祖(tuple)

创建元祖

获取元祖: 元祖从1开始,数组从下标0开始取

将数组转成map映射

拉链操作 : zip命令将多个值绑在一起

注意:如果两个数组的元素个数不一致,拉链操作后生成的数组的长度为较小的那个数组的元素个数

映射是kv对偶的集合,对偶是元祖的最简单形式,称对偶元祖

scala支持的元祖长度最大为22(个元素)

----------------------集合----------------------

scala的集合有三个类:序列sep,集合set,映射Map

在scala中集合有可变mutable和不可变immutable(默认)两种类型

---------------------------序列--------------------------

-  不可变的序列 import scala.collection.immutable._

-  在Scala中列表要么为空(Nil表示空列表)要么是一个head元素加上一个tail列表。

-  ::   表示右结合,列表从右开始向左结合

-  定义List时,List()不可变,ListBuffer()可变

----------------------------Set------------------------

不可变的

可变的    set是无序的不可重复的

08-24 08:31