分享

RDD创建内幕彻底解密

 看风景D人 2019-02-24

为什么RDD有很多种创建方法

因为Spark运行的介质、硬件存储不同

Spark和Hadoop有没有关系?
没关系,Spark可以以Hadoop作为存储
学Spark有没有必要学Hadoop?
专注于计算的话没必要学

第一个RDD:代表了Spark应用程序输入数据的来源
通过tranformation来对RDD进行各种算子的转换,实现算法
创建RDD的几种基本方式:
1、使用程序中的集合创建RDD
2、使用本地文件系统创建RDD
3、使用HDFS创建RDD
4、基于DB创建RDD
5、基于NoSQL,例如HBase,创建RDD
6、基于S3
7、基于数据流创建RDD

通过集合创建RDD的实际意义:测试
使用本地文件系统创建RDD的作用:测试大量数据的文件
使用HDFS创建RDD的意义:生产环境最常用的RDD创建方式

Hadoop+Spark目前大数据领域最有前途的组合

可以在智能设备如:手机、平板、电视上使用Spark,也可以在PC以及Server上使用Spark(只要有正常的JVM)

多线程的方式模拟分布式

local模式默认情况下如果失败了就是失败了,但可以重试且可以指定重试次数

在spark shell中不用重新创建spark context,其本身就是个spark程序,不用创建了

reduce是action,所以在spark shell中敲入这个后直接就会出发一个作业

没有指定分片的话,spark看有多少个core就用多少个core

只有一个Stage,原因:reduce是action,不会产生RDD,不需要shuffle,所以只有一个Stage。

实际上Spark的并行度到底应该设置为多少?建议为每个core可以承载2-4个partition

刚刚的代码创建的是ParallelCollectionRDD,看一下源码

数据Block是由BlockManager管理的

从HDFS中获取文件之后得到的MapPartitionRDD原因:
从HDFS获取文件后有一个去掉行号的map操作

基于sql的RDD由于数据分布式存储,所以要非常认真的写PreferedLocation

从数据本地性上讲,安装有mysql、HBase等的服务器上也要安装spark,但有时无法实现,这时需要用到Tachyon

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多