1.Spark & MR相对速度快的原因?(以及两者的比较)
都是分布式计算框架,
Spark基于内存,MR基于磁盘(HDFS)。
Spark处理数据的能力一般是MR的十倍以上,
Spark中除了基于内存计算外,还有DAG有向无环图来切分任务的执行先后顺序。
MR中只有map,reduce和join,而Spark中有各种场景的算子
2.完成Spark java版本WordCount & Scala版本WordCount 编写,默写Scala版本。
val conf = new SparkConf().setAppName("wc").setMaster("local")
//SparkContext是通往spark集群的唯一通道
val sc = new SparkContext(conf)
sc.textFile("./words").flatMap(_.split("")).map((_,1)).reduceByKey(_+_).foreach(println)
sc.stop()
3.Spark的运行模式有哪些?
Ø Local
多用于本地测试,如在eclipse,idea中写程序测试等。
Ø Standalone
Standalone是Spark自带的一个资源调度框架,它支持完全分布式。
Ø Yarn
Hadoop生态圈里面的一个资源调度框架,Spark也是可以基于Yarn来计算的。
要基于Yarn来进行资源调度,必须实现AppalicationMaster接口,Spark实现了这个接口,所以可以基于Yarn。
Ø Mesos(国外用的多)
资源调度框架。
4.Spark核心RDD
1).什么是RDD?
弹式分布数据集
2).RDD的五大特性?
1.RDD是由一系列的partition组成的
2.RDD之间具有依赖关系
3.RDD作用在partition是上
4.partition作用在具有(k,v)格式的数据集
5.partition对外提供最佳计算位置,利于数据本地化的处理
3).Spark RDD需要注意的问题
1.textFile方法底层封装的是读取方法和MR读取文件的方式一样,读取文件之前先split,默认split大小