您的位置:首页 > 编程语言 > Python开发

Spark学习--持续更新

2017-04-26 17:19 183 查看

1、spark三种语言对比:

使用scala是greate,python是nice,java是ugly。

2、spark RDD(Resilient Distributed Datasets弹性分布式数据集)

2.1、RDD特性:

– A list of partitions

– A function for computinf each split

– A list of dependecies on other RDDs

– Optionally, a Partitioner for key-value RDDs (e.g. to say that RDD is hash-partitioned)

– Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file)

2、2种类型RDD

对于RDD,有两种类型的动作,一种是Transformation,一种是Action。它们本质区别是:

Transformation返回值还是一个RDD。它使用了链式调用的设计模式,对一个RDD进行计算后,变换成另外一个RDD,然后这个RDD又可以进行另外一次转换。这个过程是分布式的

Action返回值不是一个RDD。它要么是一个Scala的普通集合,要么是一个值,要么是空,最终或返回到Driver程序,或把RDD写入到文件系统中

Transformations转换操作,返回值还是一个 RDD,如 map、 filter、 union;

Actions行动操作,返回结果或把RDD持久化起来,如 count、 collect、 save。

3、map和flatmp的区别

map的作用很容易理解就是对rdd之中的元素进行逐一进行函数操作映射为另外一个rdd。flatMap的操作是将函数应用于rdd之中的每一个元素,将返回的迭代器的所有内容构成新的rdd。通常用来切分单词。

4、OOM

错误提示:java.lang.OutOfMemoryError。

这类OOM是由于JVM分配的给应用的Heap Memory已经被耗尽,可能是因为应用在高负荷的情况下的却需要很大的内存,因此可以通过修改JVM参数来增加Java Heap Memory(不过也不能无限制增加,后面那种OOM有可能就是因为这个原因而产生)。另一种情况是因为应用程序使用对象或者资源没有释放,导致内存消耗持续增加,最后出现OOM,这类问题引起的原因往往是应用已不需要的对象还被其他有效对象所引用,那么就无法释放,可能是业务代码逻辑造成的(异常处理不够例如IO等资源),也可能是对于第三方开源项目中资源释放了解不够导致使用以后资源没有释放(例如JDBC的ResultSet等)。

5、scala和ipython多行编辑

scala中是

:paste


ipython中是

%% paste


最后使用
Ctr+d
退出

6、区分<-,=>,->

<-
用于for循环,符号∈的象形:

for (i <- 0 until 100)


=>
用于匿名函数,也可用在import中定义别名:import javax.swing.{JFrame=>jf}

List(1,2,3).map(x=> x*x)
((i:Int)=>i*i)(5) // 25


->
用于Map初始化

Map(1->"a",2->"b") // (1:"a",2:"b")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spark scala python