常见创建RDD的方法

第一阶段(1-3月):会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战。课程会涵盖Scala编程详解、Spark核心编程、Spark SQLSpark StreamingSpark GraphXSparkRMachine LearningSpark内核以及源码剖析、性能调优、企业级案例实战等部分

第二阶段(Spark超大规模大数据案例实战):使用了Spark技术生态栈中的Spark CoreSpark SQLSpark StreamingSparkRMachine Learning,进行离线计算和实时计算业务模块的开发、数据的关联性分析、用户行为模式和特征的训练与应用、用户网络的社区发现、用户影响力、能量传播、标签传播、标签推理、人群划分、年龄段预测、商品交易时序跳转

创建RDD方法

创建RDD的方式(方法很多,场景也很多)以下为较为常见的七中方式:

1,使用程序中的集合创建RDD;

2,使用本地文件系统创建RDD

3,使用HDS创建RDD

4,基于DB创建RDD

5,基于NoSQL,例如HBase

6,基于S3创建RDD

7,基于数据流创建RDD

我们可以在再智能设备 例如手机 平板 电视 上使用Spark,也可以在PC和Server使用使用SDpark!

多线程方式模拟分布式,Local模式 默认情况下如果失败了 就是失败了。下面代码使用程序中的集合创建RDD。

(1)通过集合创建RDD

object TestClassRdd_1 {
  def main(args:Array[String]): Unit ={
    val conf =new SparkConf()
    conf.setAppName("My first Test in class of the Spark")
    conf.setMaster("local")
    val sc = new SparkContext(conf)
    val number = 1 to 100
    val rdd =sc.parallelize(number)
    val sum =rdd.reduce(_+_)  //1+2=3 3+3=6 6+4=10
    println("1+ ... +100"+ sum)
  }
}
(2)使用HDFS创建RDD
val conf = new SparkConf()
conf.setAppName()
    conf.setMaster("local")
   
    val sc = new SparkContext()
    val numbers = 1 to 100 //创建一个scala集合
    val rdd = sc.textFile(“/input/data/reanme.md”)  //创建了一个ParallelCollectionRDD
    val linesLength = rdd.map(line => line.length)  
    val sum = linesLength.reduce(_ + _)  
 println("The total characters of the file is : " + sum)
(3)本地文件创建RDD,主要用于测试大量数据
val conf = new SparkConf()
conf.setAppName()
    conf.setMaster("Create RDD in local")
   
    val sc = new SparkContext()
    val numbers = 1 to 100 
    val rdd = sc.textFile(“D://spark//reanme.md”)  //创建了一个ParallelCollectionRDD
    val linesLength = rdd.map(line => line.length)  
    val sum = linesLength.reduce(_ + _)  
 println("The total characters of the file is : " + sum)

将代码拷贝到Spark集群,进行运行,上图其实将1-100分成了32个Partition,下面运行parallelize(默认情况Spark最大允许cores),生成parallelizeCollectionRDDreduce不会产生RDD。

实际上Spark的并行度到底应该设置为多少呢?每个Core可以乘上2-4个partitions,任务处理大小不同,所需CPU、MEM均不同,设置CORES大小在64-128之间,跟并行度有关,跟数据规模无关,只跟每个Stage在计算Partition所需的CPU、MEM有关。基于文件系统创建RDDBlockManagerMaster会持有整个Application的Block的位置、Block所占用的存储空间等元数据信息,在Spark的Driver的DAGScheduler中就是通过这些信息来确认数据运行的本地性的。



DT大数据梦工厂

新浪微博:www.weibo.com/ilovepains/

微信公众号:DT_Spark

博客:http://.blog.sina.com.cn/ilovepains

TEL:18610086859

Email:18610086859@vip.126.com









  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值