1. 程式人生 > >Spark之Action運算元(一)

Spark之Action運算元(一)

Spark運算元分為兩大類,本文介紹Action類運算元。

(1)reduce運算元


按照官網的解釋,傳入的引數是一個函式,一個雙引數,返回值唯一的函式,建議,該函式是可交換的,是可聯合的,如此,才能實現正確的平行計算。

這裡的函式,我平時用過加法操作,最大值操作,最小值操作;記得大資料裡提過這個概念,諸如此類可以合併操作的函式,是最合適的,平均值類的,就不適用於此種操作了。

如上圖,使用並行化產生了一個運算元,然後reduce內傳入偏函式,最終生成結果如下:


此處操作,就類似於求和操作了;如果對於String型別的,則會實現拼接操作。

(2)Collect運算元


將資料集的所有元素,按照陣列的形式予以返回,該運算元通常用於對於資料集過濾或者進行其他操作後返回的足夠小的集合;我是通常用在Scala命令列互動中,能夠得到結果輸出。

(3)count運算元


這個簡單,顧名思義,返回資料集中元素的總數。

(4)first


返回資料集中的第一個元素,類似於take(1),注意,此處並未說明是否是有序的資料集;而且只能返回一個元素。

(5)take


這裡,可以傳入引數,返回的也是一個數組,就算是n=1,返回的也是一個僅有一個元素的陣列,同樣,對資料集的資料型別和是否有序沒有任何規定

(6)taksSample


類似於sample運算元,引數意義都相同,只是該操作會直接執行,返回從資料集中取出的隨機樣本

(7)takeOrdered


該方式,類似於take運算元,但是返回的元素按照自然序排序,或者自定義的比較器進行排序。


該運算元,重在於返回的是有序集合。

(8)saveAsTextFile


將資料集的所有元素,作為文字檔案,或者一系列問問本間,寫入本地檔案系統,HDFS或者其他Hadoop支援的檔案系統,對於其中的每個元素,Spark會呼叫toString方法,將其轉換為檔案中的一行文字。

常用於生成結果的儲存。

(9)foreach


foreach運算元,引數為傳入的函式,對於資料集中的每個元素,都實現該函式,有點類似於map,但是能夠返回結果。

(10)countByKey


只對於map型別的rdd有作用,說明很詳細,下附程式碼:


作為無參函式,只會記錄數量;與reduceByKey看起來相似,實則差距很大;上述程式碼返回結果:


(11)savaAsObjectFile


也是檔案儲存的方式,但是會用Java序列化的方式,按照簡單的格式把資料集內的每個元素寫入檔案,而對於這類檔案,使用objectFile方式進行載入,

(12)saveAsSequenceFile


同樣是儲存檔案的一種形式,但其只能針對key-value格式的資料起作用;在Scala中,也可以針對可以隱式轉換成Writable型別的資料起作用;在我開發程式碼的過程中,很少用這個,在此不詳細介紹了。

相關推薦

SparkAction運算元

Spark運算元分為兩大類,本文介紹Action類運算元。(1)reduce運算元按照官網的解釋,傳入的引數是一個函式,一個雙引數,返回值唯一的函式,建議,該函式是可交換的,是可聯合的,如此,才能實現正確的平行計算。這裡的函式,我平時用過加法操作,最大值操作,最小值操作;記得

spark RDD常用運算元

- filter 演算法解釋 filter 函式功能是對元素進行過濾,對每個 元 素 應 用 f 函 數, 返 回 值 為 true 的 元 素 在RDD 中保留,返回值為 false 的元素將被過濾掉。 內 部 實 現 相 當 於 生 成 FilteredRDD

Spark路:Scala + Spark + Hadoop環境搭建

一、Spark 介紹 Spark是基於記憶體計算的大資料分散式計算框架。Spark基於記憶體計算,提高了在大資料環境下資料處理的實時性,同時保證了高容錯性和高可伸縮性,允許使用者將Spark部署在大量廉價硬體之上,形成叢集。 1.提供分散式計算功能,將分散式

Spark修煉進階篇——Spark入門到精通:第十節 Spark SQL案例實戰

作者:周志湖 放假了,終於能抽出時間更新部落格了……. 1. 獲取資料 本文通過將github上的Spark專案git日誌作為資料,對SparkSQL的內容進行詳細介紹 資料獲取命令如下: [[email protected] spa

spark mllib原始碼分析L-BFGS

1. 使用 spark給出的example中涉及到LBFGS有兩個,分別是LBFGSExample.scala和LogisticRegressionWithLBFGSExample.scala,第一個是直接使用LBFGS直接訓練,需要指定一系列優化引數,優

spark RDD運算元 parallelize,makeRDD,textFile

作者: 翟開順 首發:CSDN parallelize 呼叫SparkContext 的 parallelize(),將一個存在的集合,變成一個RDD,這種方式試用於學習spark和做一些spark的測試 scala版本 def paral

Atlassian In Action-Jira指導思想

太上,不知有之;其次,親而譽之;其次,畏之;其次,侮之。信不足焉,有不信焉。悠兮,其貴言。功成事遂,百姓皆謂“我自然”。 --《道德經》 研發管理或者系統工具的指導思想我覺得就是依照上面這句話做到“不知有之”和“我自然”。如果管理方法是合理和高效的,它一定是符合(或者能夠引導符合)大多數人的使用習慣,如果

設計模式問題集錦

是把 後繼 ogr data- 跟著 沒有 解釋器 space 基本實現 設計模式的主要資料是《大話設計模式》。第一階段先看看各種模式的基本概念。實現每一個模式下的樣例。然後在進行理解性的學習和掌握,靈活掌握各種模式的長處,知道某種模式適合那種狀態。如今,樣

MVC系列博客排球計分需求分析

height repl 系列 ges 優勢 針對 .... 9.png ota 項目簡介: 這是MVC系列博客之排球計分程序,該程序可以是對教練或者裁判使用的,讓教練有權限對隊員進行查詢得分情況,讓教練對隊員的優勢劣勢進行了解,以便對隊伍進行調整。 讓裁判更

android深入設計模式托付模式

-h listen back != new 聚合 string static data- (一)托付模式簡單介紹 托付模式是主要的設計模式之中的一個。托付。即是讓還有一個對象幫你做事情。 更多的模式,如狀態模式、策略模式、訪問者模式本質上是在更特殊的場合採用了托

JavaSE 學習筆記Java概述

environ 電子 6.0 run javase 有一點 架構 spa form 一、Java的三種技術架構: JAVAEE:Java Platform Enterprise Edition,開發企業環境下的應用程序,主要針對web程序開發; JAVASE:Java P

Java集合初探

lin 數據改變 排序。 方法 規則 找不到 集合 回收 for循環 一、集合概述、區別 集合是一種容器,數組也是一種容器 在Java編程中,裝各種各樣的對象(引用類型)的叫做容器。 為什麽出現集合類? 面向對象語言對事物的體現都是以對象的形式,所以為了方便對多個對象的操作

Spring源碼分析IOC容器

util 感覺 不能 end bsp initial 博文 要掌握 sof   Spring作為當今風靡世界的Web領域的第一框架,作為一名Java開發程序員是一定要掌握的,除了需要掌握基本的使用之外,更需要掌握其實現原理,因為我們往往在開發的過程中,會出現各種各樣的異常問

Spring源碼閱讀Springs-beans容器的基本實現

beans 閱讀 gin com -i add wid ans lock 一、Spring-beans Spring源碼閱讀之Springs-beans(一)容器的基本實現

我的IT夢——web前端開發HTML,CSS

jpg 標記語言 方便 add body 前端 input cti 列表 HTML HTML全稱HyperText Markup Language(超文本標記語言) 標簽成對出現 <!DOCTYPE html> 文檔類型定義 < > 標

學就會ado.net

content pan http 使用 lang p s 獲取 mdk XML ado.net十一組用於和數據源進行交互的面向對象類庫。數據源能夠是數據庫也能夠是文本文件、excel表格或者XML文件。簡單來說。ado.net就是與不

Nginx基本介紹

動靜分離 quit 共享內存 oct bytes err 配置文件 默認頁 日誌格式 這是一篇介紹Nginx基本信息和配置文件詳情的文章,適合入門者,如果你想深入了解Nginx請繞道 什麽是Nginx?   Nginx是輕量級,高性能,跨平臺的web服務器 Nginx的特點

SIPP常用腳本register註冊

general sof pub -m part cse have lin ica SIPP,VOIP並發測試、性能測試的神器。 本文記錄一下常用的腳本文件。 一、reg.xml 此文件是sipp的執行的腳本流程。 <!-- --> <!-- You sh

CLR設計類型接口

定義 除法 文章 div 面向 display ron 意思 color 寫到這一節的時候,CLR設計類型就已經結束了,因為CLR要求的是有一定基礎的人看的,所以我們不是從基礎類型以及運算符開始的,文章從一開始就講的是深入面向對象編程,研究C#程序的

Spark轉GemFire任務

pin val found reg for ever have class chan ADMG-40 2.2.2.4 - Global Tax Warehouse (GTW) CoA mapping -- Both BtB and Project 1 Revision