Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
大数据、hadoop、Python学习资料分享群 596471005 不管你是小白还是大牛,小编我都挺欢迎,今天的源码已经上传到群文件,不定期分享干货,
包括我自己整理的一份最新的适合2018年学习的大数据开发和零基础入门教程,欢迎初学和进阶中的小伙伴。也可以关注我。
演示Demo:使用Spark处理数据:WordCount 单词计数
("hd;).flatMa("")).map((_,1)).reduceByKey(_+_).collect
一、Scala语言基础
1、Scala是一种多范式的编程语言
支持多种方式的编程:(1)面向对象
(2)函数式编程:注意:Java 8也支持了函数式编程
2、搭建Scala的运行环境: 注意:不管安装JDK还是Scala,安装路径中一定不能有空格
(1)前提:安装JDK
(2)安装Scala跟安装JDK完全一样 :
设置环境变量:SCALA_HOME
把%SCALA_HOME%/bin ---> PATH 路径
3、Scala开发环境
(1)REPL:命令行
(2)IDEA: 安装Scala的插件
(3)Scala IDE:就是Eclipse
二、Scala语言的函数式编程
1、Scala如何定义变量
val: 常量
var: 变量
var a:Int = 1
val b:Int = 2
注意:在Scala中,定义变量的时候,可以不指定类型 ---> Scala自动进行类型推导
var a = 1
val b = 2
2、如何定义函数:关键字 def
(1) 求和
def sum(x:Int,y:Int):Int = x+y
函数名称:sum
(2) 求阶乘
def myFactor(x:Int):Int = {
if(x<=1)
1
else
x*myFactor(x-1)
}
函数名称:myFactor
注意:在Scala中,if..else 是一个表达式。表达式的最后一句话,就是表达式返回值
3、匿名函数:没有名字函数
(1) 定义一个匿名函数,求某个值*3
(x:Int) => x*3
res3: Int => Int = <function1>
第一个Int:表示函数的参数
第二个Int:表示函数的返回值
举例:
Array(1,2,3).map((x:Int) => x*3)
Array(1,2,3).map( _ * 3)
4、什么是高阶函数?把某个函数作为另一个函数的参数值
(1) 普通函数:
def fun1(name:String):String = "Hello " + name
(2) 对10进行计算:对10开平方、对10求sin(cos***)
def someAction(f:(Double)=>Double) = f(10)
只要满足:函数参数是一个double、返回值也是一个double,这个函数就可以作为f值
someAction(sqrt)
(3) 举例
def mytest(x:Int,y:Int):Int = {x*y + 100}
定义一个高阶函数
def myfunc2(f:(Int,Int)=>Int,x:Int,y:Int)= f(x,y)
三、高阶函数示例
1、map: 把集合中的每个元素取出来,进行某个操作(定义的匿名函数)------> 有一个返回值
2、foreach: 把集合中的每个元素取出来,进行某个操作(定义的匿名函数)---> 没有返回值
val numbers = List(1,2,3,4,5,6,7,8,9,10)
numbers.map((i:Int)=> i*2) ----> 会生成一个新的List
numbers.foreach((i:Int)=> i*2)
3、filter
4、partition
5、find
6、flatMap
四、Spark中的高级算子(函数、方法)
1、mapPartitionsWithIndex
2、aggregate
3、aggregateByKey
4、coalesce与repartition
5、其他高级算子
1.《eclipse如何设置scala文件夹》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《eclipse如何设置scala文件夹》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/3218968.html