您的位置:首页 > 其它

Spark RDD概念学习系列之RDD的创建(六)

2016-07-31 19:48 218 查看
RDD的创建

  两种方式来创建RDD:

1)由一个已经存在的Scala集合创建

2)由外部存储系统的数据集创建,包括本地文件系统,还有所有Hadoop支持的数据集,比如HDFS、Cassandra、HBase、Amazon S3等。

RDD只能基于在稳定物理存储中的数据集和其他已有的RDD上执行确定性操作来创建。这些确定性操作称为转换,如map、filter、groupBy、join。

  第1个RDD:代表了spark应用程序输入数据的来源,通过Transformation来对RDD进行各种算子的转换和实现算法。

  初始RDD(或第1个RDD)创建的几个方式:(有300多种)

    1、 使用程序中的集合创建RDD; 意义是:测试

    2、 使用本地文件系统创建RDD; 意义是:测试大量数据的文件

    3、 使用HDFS创建RDD; 意义是:生产环境里最常用

    4、 基于DB创建RDD;

    5、 基于NoSQL,例如HBase

    6、 基于S3创建RDD;

    7、 基于数据流创建RDD;

  以上是典型的7种,我们这里重点讲解前3种方式。















SparkContext.scala里, SparkContext.createTaskScheduler,进入该方法







我们进一步,来学习















原来如此,所以是32。







以上是并行度,默认为1。

会利用最大,即32 = 8 X 4台worker

现在,我们来采取并行度为10,来玩玩。





问:实际上spark的并行度到底应该设置为多少呢?

答:最佳是,2-4 partitions for each CPU core。

如我们这里的CPU core是32个。每个worker给的是8个。共4台机器。

32 X 2 =64 32 X 4 = 128 即64~128之间。

说明的是,跟数据规模没关系,只跟每个task在计算partitions时的CPU使用时间和内存使用情况有关。

oom是内存溢出。





RDDBaseedOnLocalFile.scala





假如,计算每行的长度总和

























好的,关于此处的源码解读,自行去深究。不多赘述。

以上是在local模式下,下面开始

集群模式











欢迎大家,加入我的微信公众号:大数据躺过的坑 免费给分享

同时,大家可以关注我的个人博客

http://www.cnblogs.com/zlslch/ http://www.cnblogs.com/lchzls/

  人生苦短,我愿分享。本公众号将秉持活到老学到老学习无休止的交流分享开源精神,汇聚于互联网和个人学习工作的精华干货知识,一切来于互联网,反馈回互联网。
  目前研究领域:大数据、机器学习、深度学习、人工智能、数据挖掘、数据分析。 语言涉及:Java、Scala、Python、Shell、Linux等 。同时还涉及平常所使用的手机、电脑和互联网上的使用技巧、问题和实用软件。 只要你一直关注和呆在群里,每天必须有收获

以及对应本平台的QQ群:161156071(大数据躺过的坑)







  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: