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)
}
}