91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

spark中flatmap跟map的區別

發布時間:2021-09-16 21:55:17 來源:億速云 閱讀:224 作者:chen 欄目:大數據

本篇內容主要講解“spark中flatmap跟map的區別”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“spark中flatmap跟map的區別”吧!

背景

map和flatmap扁平化調用,從字面意思或者官網介紹,可能會給一些人在理解上造成困擾【包括本人】,所以今天專門花時間來分析,現整理如下:

首先做一下名詞解釋------------------------------------------------

我的理解

map:map方法返回的是一個object,map將流中的當前元素替換為此返回值;

flatMap:flatMap方法返回的是一個stream,flatMap將流中的當前元素替換為此返回流拆解的流元素,底層是遞歸性質的只要數據是集合就會把該集合全部數據拿出來;

官方解釋

map:Returns a stream consisting of the results of applying the given function to the elements of this stream.

返回一個流,包含給定函數應用在流中每一個元素后的結果

flatmap:Returns a stream consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element.

返回一個流,包含將此流中的每個元素替換為通過給定函數映射應用于每個元素而生成的映射流的內容

舉例說明

有二箱雞蛋,每箱5個,現在要把雞蛋加工成煎蛋,然后分給學生。

map做的事情:把二箱雞蛋分別加工成煎蛋,還是放成原來的兩箱,分給2組學生;

flatMap做的事情:把二箱雞蛋分別加工成煎蛋,然后放到一起【10個煎蛋】,分給10個學生;

完整測試代碼如下:

public class Map_FlatMap {


    List<String[]> eggs = new ArrayList<>();

    @Before
    public void init() {
        // 第一箱雞蛋
        eggs.add(new String[]{"雞蛋_1", "雞蛋_1", "雞蛋_1", "雞蛋_1", "雞蛋_1"});
        // 第二箱雞蛋
        eggs.add(new String[]{"雞蛋_2", "雞蛋_2", "雞蛋_2", "雞蛋_2", "雞蛋_2"});
    }

    // 自增生成組編號
    static int group = 1;
    // 自增生成學生編號
    static int student = 1;

    /**
     * 把二箱雞蛋分別加工成煎蛋,還是放在原來的兩箱,分給2組學生
     */
    @Test
    public void map() {
        eggs.stream()
                .map(x -> Arrays.stream(x).map(y -> y.replace("雞", "煎")))
                .forEach(x -> System.out.println("組" + group++ + ":" + Arrays.toString(x.toArray())));
        /*
        控制臺打印:------------
        組1:[煎蛋_1, 煎蛋_1, 煎蛋_1, 煎蛋_1, 煎蛋_1]
        組2:[煎蛋_2, 煎蛋_2, 煎蛋_2, 煎蛋_2, 煎蛋_2]
         */
    }

    /**
     * 把二箱雞蛋分別加工成煎蛋,然后放到一起【10個煎蛋】,分給10個學生
     */
    @Test
    public void flatMap() {
        eggs.stream()
                .flatMap(x -> Arrays.stream(x).map(y -> y.replace("雞", "煎")))
                .forEach(x -> System.out.println("學生" + student++ + ":" + x));
        /*
        控制臺打印:------------
        學生1:煎蛋_1
        學生2:煎蛋_1
        學生3:煎蛋_1
        學生4:煎蛋_1
        學生5:煎蛋_1
        學生6:煎蛋_2
        學生7:煎蛋_2
        學生8:煎蛋_2
        學生9:煎蛋_2
        學生10:煎蛋_2
         */
    }

}

落實到Python中區別就是

flatMap

val lineArray = Array("hello you","hello me","hello world")

val lines = sc.parallelize(lineArray, 1)

val words = lines.flatMap(line =>{ line.split(" ") })

words.foreach {

  word => println(word.mkString)
}

結果:

spark中flatmap跟map的區別

map

val lineArray = Array("hello you","hello me","hello world")

val lines = sc.parallelize(lineArray, 1)

val words = lines.map(line =>{ line.split(" ") })

words.foreach {

  word => println(word.mkString)
}

結果

 spark中flatmap跟map的區別

map:獲取一個新元素(原本幾個元素還是幾個元素)

flatmap: 獲取一個或者多個新元素(比原來的元素多) 

到此,相信大家對“spark中flatmap跟map的區別”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

婺源县| 麻阳| 伊宁县| 灌阳县| 兰溪市| 通榆县| 南充市| 柳林县| 邢台县| 定安县| 政和县| 奇台县| 梨树县| 乌兰察布市| 扬中市| 清镇市| 五寨县| 衡山县| 南部县| 永德县| 乌苏市| 甘泉县| 奎屯市| 托克逊县| 屯门区| 双辽市| 黑山县| 将乐县| 三明市| 长春市| 买车| 宁陕县| 高安市| 姜堰市| 江川县| 方城县| 怀来县| 平定县| 乳山市| 江孜县| 太康县|