Spark RDD弹性表现和来源
- - 开源软件 - ITeye博客hadoop 的MapReduce是基于数据集的,位置感知,容错 负载均衡. 基于数据集的处理:从物理存储上加载数据,然后操作数据,然后写入物理存储设备;. 基于数据集的操作不适应的场景:. 重点是:基于数据流的方式 不能够复用曾经的结果或者中间计算结果;. spark RDD是基于工作集的. 工作流和工作集的共同特点:位置感知,自动容错,负载均衡等.
package com.imf.spark.rdd import org.apache.spark.{SparkConf, SparkContext} /** * Created by lujinyong168 on 2016/2/2. * DT大数据梦工厂-IMF * 使用程序中的集合创建RDD(用于小量测试) */ object RDDCreateByCollections { def main(args: Array[String]) { val conf = new SparkConf()//创建SparkConf对象 conf.setAppName("RDDCreateByCollections")//设置应用名称 conf.setMaster("local") val sc = new SparkContext(conf)//创建SparkContext对象 //创建一个Scala集合 val numbers = 1 to 100 val rdd = sc.parallelize(numbers) // val rdd = sc.parallelize(numbers,10)//设置并行度为10 val sum = rdd.reduce(_+_) println("1+2+3+...+99+100="+sum) } }
package com.imf.spark.rdd import org.apache.spark.{SparkConf, SparkContext} /** * Created by lujinyong168 on 2016/2/2. * DT大数据梦工厂-IMF * 使用本地文件系统创建RDD(测试大量数据) * 统计文本中的字符个数 */ object RDDCreateByLocal { def main(args: Array[String]) { val conf = new SparkConf()//创建SparkConf对象 conf.setAppName("RDDCreateByLocal")//设置应用名称 conf.setMaster("local") val sc = new SparkContext(conf)//创建SparkContext对象 val rdd = sc.textFile("D://testspark//WordCount.txt") val linesLen = rdd.map(line=>line.length) val sum = linesLen.reduce(_+_) println("The total characters of the file is : "+sum) } }
package com.imf.spark.rdd import org.apache.spark.{SparkConf, SparkContext} /** * Created by lujinyong168 on 2016/2/2. * DT大数据梦工厂-IMF * 使用HDFS创建RDD(生产环境最常用的RDD创建方式) */ object RDDCreateByHDFS { def main(args: Array[String]) { val conf = new SparkConf()//创建SparkConf对象 conf.setAppName("RDDCreateByHDFS")//设置应用名称 conf.setMaster("local") val sc = new SparkContext(conf)//创建SparkContext对象 val rdd = sc.textFile("/library/") val linesLen = rdd.map(line=>line.length) val sum = linesLen.reduce(_+_) println("The total characters of the file is : "+sum) } }