1.RDD基礎:
成都創新互聯從2013年創立,是專業互聯網技術服務公司,擁有項目成都做網站、網站制作網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元柳南做網站,已為上家服務,為柳南各地企業和個人服務,聯系電話:18980820575Spark中RDD是不可變的分布式對象集合。每個RDD被分為多個分區,這些分區運行在集群中的不同節點上。RDD可以包含任意類型的對象(甚至可以是自定義的)。
前面講到,Spark包含轉化操作和行動操作。Spark只會惰性計算這些RDD。它們只有第一次在一個行動操作中用到時,才會真正計算。默認情況下,Spark的RDD會在你每次對它們進行行動操作時重新計算。如果想在多個行動操作中重用同一個RDD,可以使用RDD.persist()讓Spark把這個RDD緩存(內存或者磁盤)下來。
2.創建RDD:
Spark提供2種創建方式:
(1)讀取外部數據集:之前的sc.textFile()就屬于這種類型。更加常用的方式。
(2)在驅動器程序中對一個集合(list、Set等)進行并行化,要使用SparkContext.parallelize()方法。
3.RDD操作:
RDD主要分成數據類型RDD和鍵值對RDD。有一些操作可以適用于所有類型的RDD,這時候可以直接創建JavaRDD對象,例如map(),filter()等。有些操作只適用于數據類型的RDD,例如 ,這時候創建JavaDoubleRDD對象。有些操作只適用于鍵值對RDD,例如 ,這時候創建JavaPairRDD對象。
3.1 轉化操作:
3.1.1 譜系圖:
通過轉化操作,從已有的RDD中派生出新的RDD,Spark會使用譜系圖來記錄這些不同RDD之間的依賴關系。如下圖所示:
3.1.2 :
基本的轉化操作(map、flatMap、filter、distinct、sample),假設RDD的數據{1, 2, 3, 3}:
RDD的集合操作(union、intersection、subtract、cartesian),兩個RDD分別是{1,2,3}、{3,4,5}:
函數名 | 作用 | 例子 | 運行結果 |
map() | Apply a function to each element in the RDD and return an RDD of the result. | rdd.map(x => x +1) | {2, 3, 4, 4} |
flatMap() | Apply a function to each element in the RDD and return an RDD of the contents of the iterators returned. Often used to extract words. | rdd.flatMap(x =>x.to(3)) | {1, 2, 3, 2, 3, 3, 3} |
filter() | Return an RDD consisting of only elements that pass the condition passed to filter(). | rdd.filter(x => x!= 1) | {2, 3, 3} |
distinct() | Remove duplicates. | rdd.distinct() | {1, 2, 3} |
sample(withReplacement,fraction, [seed]) | Sample an RDD, with or without replacement. | rdd.sample(false,0.5) | 不確定 |
union() | Produce an RDD containing elements from both RDDs. | rdd.union(other) | {1, 2, 3, 3, 4, 5} |
intersection() | RDD containing only elements found in both RDDs. | rdd.intersection(other) | {3} |
subtract() | Remove the contents of one RDD (e.g., remove training data). | rdd.subtract(other) | {1, 2} |
cartesian() | Cartesian product with the other RDD. | rdd.cartesian(other) | {(1, 3), (1, 4),… (3, 5)} |
4.給Spark傳遞函數:
大多數的轉化操作和一部分行動操作,都需要給Spark方法傳遞函數。在java中,函數式實現了包org.apache.spark.api.java.function下面任意一個接口的類。該包下面有許多接口,下面是一些基礎接口:
函數名 | 需要實現的方法 | 用法 |
Function<T, R> | R call(T) | Take in one input and return one output, for use with operations like map()and filter(). |
Function2<T1, T2,R> | R call(T1, T2) | Take in two inputs and return one output, for use with operations like aggregate() or fold(). |
FlatMapFunction<T,R> | Iterable<R> call(T) | Take in one input and return zero or more outputs, for use with operations like flatMap(). |
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
名稱欄目:RDD編程-創新互聯
網站地址:http://vcdvsql.cn/article26/hcijg.html
成都網站建設公司_創新互聯,為您提供商城網站、面包屑導航、域名注冊、網站導航、微信小程序、Google
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯