Spark基本函数操作实例

来源:互联网 发布:野草教学设计软件 编辑:程序博客网 时间:2024/06/11 10:38

这是编写spark程序的一些常用的基本函数

接下来我将会通过编写代码来使用这些函数

package com.zlf.sparkimport org.apache.spark.SparkContextimport org.apache.spark.SparkConf/** * spark 基本函数操作实例 */object FunctionTest {  def main(args: Array[String]): Unit = {    val conf=new SparkConf().setAppName("FunctionTest").setMaster("local");    val sc=new SparkContext(conf);    var rdd =sc.parallelize(List(1,2,3,4,5,6));    println("map函数测试=================");    val mapRdd=rdd.map { x => x*2 };// 或者写成  rdd.map(_*2)    mapRdd.collect().foreach(println);//控制台输出      println("filter函数测试=================");    val filterRdd=mapRdd.filter(_>5);    filterRdd.collect().foreach(println);     println("count cache函数测试=================");     var textrdd=sc.textFile("src/count.txt");     var count=textrdd.count();     println(count);     textrdd.cache();     count= textrdd.count();     println(count);     println("wordcount函数测试=================");     //把每一行进行根据空格分割,然后flatMap会把多个list合并成一个list,最后把每个元素变成一个元组     //然后把具有相同key的元素的value进行相加操作,参考上面图片中的函数定义,针对reduceByKey,     //传入的函数是对value进行操作的     val wordcount=textrdd.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)     wordcount.collect().foreach(println);     //其实完成了一个sort by value的过程, sortByKey(false),表示倒序排列     val wordcount2 =textrdd.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).map(x=>(x._2,x._1)).sortByKey(false).map(x=>(x._2,x._1))//     val wordcount2 =textrdd.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).map(x => (x._2, x._1)).sortByKey(false).map(x => (x._2, x._1))      wordcount2.collect().foreach(println);     println("union函数测试=================");      val rdd1=sc.parallelize(List(('a',1),('a',2),('b',4)))           val rdd2=sc.parallelize(List(('b',1),('b',2),('a',4)))      val result_union=rdd1 union rdd2;      //结果是把两个list合并成一个,List(('a',1),(‘a’, 2),('b',4),(‘b’, 1),('b',2),('a',4))      result_union.collect().foreach(println);         println("join函数测试=================");       val result_join=rdd1 join rdd2;       //结果是把两个list做笛卡尔积,Array((a,(1,4)),(a,(2,4)),(b,(4,1)),(b,(4,2)))       result_join.collect().foreach(println);       val rdd_add=rdd.reduce(_+_);      println(rdd_add);       val rdd_seq=result_union.lookup('a');      println(rdd_seq);//返回 WrappedArray(1, 2, 4)  }}
原创粉丝点击