Spark学习笔记

来源:互联网 发布:编程培训周末班 编辑:程序博客网 时间:2024/06/05 02:29

前面学习了hadoop,在学习spark的时候,比较不解,spark是专门用来计算的框架,而hadoop可以用来分布式存储也可以通过MR来进行计算,spark虽然跟hadoop没有什么关系,但是spark其实是在hadoop上面做了优化,hadoop把中间写过卸载磁盘中,而spark把中间结果写在内存中,因此spark的计算更加快。
spark的计算是基于RDD的,RDD其实是一个链表类似的数据。RDD可以是我们本地的数据,也可以是HDFS中的数据。RDD其实是spark定义的一个数据标准,spark只能处理RDD这样类型的数据,只有把数据转化成RDD才能进行计算。
spark还有一个更加强大的功能,当RDD丢失的时候,spark会根据前面的RDD推测出来丢失的RDD,这样就不用从新计算每一个步骤。
下面写一个使用scala编程的wordcount程序。

import org.apache.spark.{SparkContext, SparkConf}import org.apache.spark.SparkContext._/** * Created by ivan on 15/10/12. */object test {  def main(args: Array[String]) {    val conf = new SparkConf()//    conf.set("mapreduce.framework.name", "yarn");//    conf.set("mapreduce.jobtracker.address", "ivan.local:9001");//    conf.set("yarn.resourcemanager.hostname", "ivan.local");//    conf.set("yarn.resourcemanager.admin.address", "ivan.local:8033");//    conf.set("yarn.resourcemanager.address", "ivan.local:8032");//    conf.set("yarn.resourcemanager.resource-tracker.address", "ivan.local:8031");//    conf.set("yarn.resourcemanager.scheduler.address", "ivan.local:8030");//    conf.set("yarn.resourcemanager.hostname", "ivan.local");    val sc = new SparkContext(conf)//    sc.textFile("").cache()    sc.textFile("file:///Users/ivan/Desktop/bb.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).map(x=>(x._2,x._1)).sortByKey(false).map(x=>(x._2,x._1)).repartition(1).saveAsTextFile("file:///Users/ivan/Desktop/bb")//    sc.textFile("file:///Users/ivan/Desktop/bb.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).map(x=>(x._2,x._1)).sortByKey(false).map(x=>(x._2,x._1)).repartition(1).saveAsTextFile("file:///Users/ivan/Desktop/bb")  }}
0 0
原创粉丝点击