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))//返回列表

  • 相关阅读:
    oracle ORA01001,请求资源正忙或无效
    Flex[Embed(source='assets/error.png')]无法解析用于转换的代码错误
    正在覆盖未标记为 override 的函数
    LINUX umask详解
    C++服务器学习路线
    计算kappa系数
    umask的含义及设置
    Seurat的各种数据成员访问
    GAN训练判别器和生成器时的顺序与detach
    autograd.grad 学习
  • 原文地址:https://www.cnblogs.com/wuxiaolong4/p/12007914.html
Copyright © 2011-2022 走看看