zoukankan      html  css  js  c++  java
  • spark的flatMap和map区别

    map()是将函数用于RDD中的每个元素,将返回值构成新的RDD。

    flatmap()是将函数应用于RDD中的每个元素,将返回的迭代器的所有内容构成新的RDD,这样就得到了一个由各列表中的元素组成的RDD,而不是一个列表组成的RDD。

    新建person.txt:

    1 lisi 18
    2 liwu 20
    3 liyang 45
    4 liming 30
    5 lizhao 44

    测试代码:

    object Test extends App {
    Logger.getLogger("org.apache.spark").setLevel(Level.OFF)
    val sparkConf: SparkConf = new SparkConf().setAppName(this.getClass.getName).setMaster("local")
    val sparkContext = new SparkContext(sparkConf)
    val rdd: RDD[String] = sparkContext.textFile("C:\Users\dummy\Desktop\person.txt")
    val flatMapRdd: RDD[String] = rdd.flatMap(_.split(" "))
    val mapRdd: RDD[Array[String]] = rdd.map(_.split(" "))
    flatMapRdd.foreach(x=>{
    println(x.toString)
    })
    println("-------------")
    mapRdd.foreach(x=>{
    println(x(0),x(1),x(2))
    })
    }
    rdd的元素是 1 lisi 18 的一整行数据,String类型,经过split切分,返回的RDD类型应为Array[String]类型
    红色部分可以看出,flatMap返回的RDD的类型是 迭代器Array的元素的类型String,

    而map返回的RDD类型是经过切分返回的RDD类型,即为Array[String]类型
    返回结果截图:


  • 相关阅读:
    3.1 创建模型-实体属性
    3. 创建模型
    2.1 DbContext
    2. EF Core 如何显示执行的SQL语句
    1.1 为现有数据库生成实体模型
    1. EF Core 概述
    【2020-08-01】人生十三信条
    【一句日历】2020年8月
    【2020-07-31】一个像我一样精力充沛的孩子
    【2020-07-30】强大内心是自己的义务
  • 原文地址:https://www.cnblogs.com/dummyly/p/10032608.html
Copyright © 2011-2022 走看看