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

  • 相关阅读:
    SQL将表中某一类型的一列拼接成一行
    javascript中把一个数组的内容全部赋值给另外一个数组
    Socket接口原理及用C#语言实现
    Linq表连接大全(INNER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN、FULL OUTER JOIN、CROSS JOIN)
    C#中对DataTable进行全连接后group by,orderby
    循环删除DataTable.Row中的多行问题
    跨库连接报错Server 'myLinkedServer' is not configured for RPC
    执行远程存储过程并插入到临时表中
    无法定位程序输入点_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcj于动态链接库上
    Qt 日期时间
  • 原文地址:https://www.cnblogs.com/wuxiaolong4/p/12007914.html
Copyright © 2011-2022 走看看