zoukankan      html  css  js  c++  java
  • SparkCore系列(一)变换操作,查找取值操作

    一:变换操作

    rdd中有元组,元组只能是key,value结构,适用于下面很多方法

    map

                val conf = new SparkConf().setAppName("HelloWorld").setMaster("local")
                val sc = new JavaSparkContext(conf).sc

                sc.textFile("/software/java/idea/data").collect().map(x=>println(x))  //几乎和sparksql一样

    flatMap

                sc.textFile("/software/java/idea/data").collect()
                            .flatMap(x => x.split("\|"))
                            .map(x=>println(x))     //将数组转换为单个对象

    mapValues

                sc.textFile("/software/java/idea/data")
                            .flatMap(x => x.split("\|")).map(x=>(x,1))
                            .mapValues(x=> x + 9) //对于 key value的rdd,循环value

    flatMapValues

                sc.textFile("/software/java/idea/data").map(x=>(1,x))
                            .flatMapValues (x=>x.split("\|"))//对于 key value的rdd,循环 float value
                            .collect().map(x => println(x))

    filter

                val conf = new SparkConf().setAppName("HelloWorld").setMaster("local")
                val sc = new JavaSparkContext(conf).sc

                sc.textFile("/software/java/idea/data").collect()
                            .filter(x => x.contains("aa"))  //过滤操作

    collect

                sc.textFile("/software/java/idea/data").map(x=>(1,x))
                            .collect().map(x => println(x))  //collection 是action操作,只有遇到action操作,才会执行

    foreach

                sc.textFile("/software/java/idea/data").map(x=>(1,x))
                            .collect().foreach(x => println(x))//功能类似map

    distinct

                sc.textFile("/software/java/idea/data").map(x=>(1,x)).distinct()//去重复
                            .collect().foreach(x => println(x))

    二:查找取值操作

    take

                val some = sc.textFile("/software/java/idea/data").take(1)//不排序随机取一个
                println(some.mkString("|"))

    top

                val some = sc.textFile("/software/java/idea/data").top(1)//排序desc后取一个
                println(some.mkString("|"))

    keys

                val some = sc.textFile("/software/java/idea/data")
                            .flatMap(x=>x.split("\|")).map(x=>(x,1)).keys//取出来所有的key,仍然是rdd
                some.collect().map(x=>println(x))

    values

                val some = sc.textFile("/software/java/idea/data")
                            .flatMap(x=>x.split("\|")).map(x=>(1,x)).values//取出来所有的value,仍然是rdd
                some.collect().map(x=>println(x))

    takeOrdered

                val some = sc.textFile("/software/java/idea/data")
                            .flatMap(x=>x.split("\|")).map(x=>x.toInt)
                            .takeOrdered(3)//排序asc后取一个
                some.map(x=>println(x))

    takeSample

                val data = sc.textFile("/software/java/idea/data")
                            .flatMap(x=>x.split("\|")).map(x=>x.toInt)

                //第一个参数withReplacement ,表示采样是否放回,true表示有放回的采样,false表示无放回采样;
                //第二个参数num,表示返回的采样数据的个数,这个也是takeSample函数和sample函数的区别;
                // 第三个参数seed,表示用于指定的随机数生成器种子 可选
                println(data.takeSample(true,3).mkString("|"))
                println(data.takeSample(true,3).mkString("|"))
                println(data.takeSample(true,3).mkString("|"))

    lookup

                val data = sc.textFile("/software/java/idea/data")
                            .flatMap(x=>x.split("\|")).map(x=>(x.toInt,x.toInt))

                println(data.lookup(2))//返回列表

  • 相关阅读:
    HTML5 postMessage 和 onmessage API 详细应用
    layerX
    HTML5中createPattern()
    HTML5中lineCap端点样式遇到closePath()
    [转]Modernizr的介绍和使用
    HTML5学习之路
    javascript选取文档元素
    ie不支持getElementsByClassName的解决办法
    document.images、document.forms、doucument.links——>HTMLCollection
    JavaScript 参考手册——javascript本地和内置对象、BOM、DOM
  • 原文地址:https://www.cnblogs.com/wuxiaolong4/p/12007914.html
Copyright © 2011-2022 走看看