Spark RDD或Dataframe持久化的選擇
背景
測試資料(df,dataframe格式):800萬條, 4.5G。
計算配置:每個executor的memory為20G,32個核。
測試語句:count條數—df.groupby("_90").count().show()
持久化操作
持久化操作 | 特點 | 程式碼 | 計算時間 |
---|---|---|---|
無 | df.count() |
17秒 | |
只到記憶體 | 以分割槽的形式存到叢集的各機器記憶體中上 | df.persist(StorageLevel.MEMORY_ONLY) |
2.6秒 |
只到硬碟 | 存到叢集的各機器硬碟中上 | df.persist(StorageLevel.DISK_ONLY) |
2.8秒 |
硬碟和記憶體 | 記憶體不夠用的時候放硬碟 | df.persist(StorageLevel.MEMORY_AND_DISK) |
2.6秒 |
只到記憶體(序列化) | 節省記憶體,但是處理變慢 | df.persist(StorageLevel.MEMORY_ONLY_SER) |
4.9秒 |
只到記憶體(2各備份) | 以防其中一個節點死掉,更穩定 | df.persist(StorageLevel.MEMORY_ONLY_2) |
2.8秒 |
Stack Overflow上有關於效能的比較,如下:
相關推薦
Spark RDD或Dataframe持久化的選擇
背景 測試資料(df,dataframe格式):800萬條, 4.5G。 計算配置:每個executor的memory為20G,32個核。 測試語句:count條數—df.groupby("_90").count().show() 持久化操作 持久化操作
spark RDD,DataFrame,DataSet 介紹
列式存儲 ren gre rds 包含 執行 這一 ces 中一 彈性分布式數據集(Resilient Distributed Dataset,RDD) RDD是Spark一開始就提供的主要API,從根本上來說,一個RDD就是你的數據的一個不可變的分布式元素集
Spark:RDD操作和持久化
建立RDD 進行Spark核心程式設計時,首先要做的第一件事,就是建立一個初始的RDD。該RDD中,通常就代表和包含了Spark應用程式的輸入源資料。然後在建立了初始的RDD之後,才可以通過Spark Core提供的transformation運算元,對該RDD進行轉換,來獲取其他的RD
Spark RDD、DataFrame和DataSet的區別
RDD 優點: 編譯時型別安全 編譯時就能檢查出型別錯誤 面向物件的程式設計風格 直接通過類名點的方式來操作資料 缺點: 序列化和反序列化的效能開銷 無論是叢集間的通訊, 還是IO操作都需要對物件的結構和資料進行序列化和反序列化. G
spark rdd轉dataframe 寫入mysql的示例
dataframe是在spark1.3.0中推出的新的api,這讓spark具備了處理大規模結構化資料的能力,在比原有的RDD轉化方式易用的前提下,據說計算效能更還快了兩倍。spark在離線批處理或者實時計算中都可以將rdd轉成dataframe進而通過簡
Spark RDD、DataFrame、DataSet區別和聯絡
左側的RDD[Person]雖然以Person為型別引數,但Spark框架本身不瞭解Person類的內部結構。而右側的DataFrame卻提供了詳細的結構資訊,使得Spark SQL可以清楚地知道該資料集中包含哪些列,每列的名稱和型別各是什麼。DataFrame多了資料的結構資訊,即schema。RDD是分散
Spark RDD轉換為DataFrame
person true line ted struct ger fields text san #構造case class,利用反射機制隱式轉換 scala> import spark.implicits._ scala> val rdd= sc.text
Apache Spark 2.0三種API的傳說:RDD、DataFrame和Dataset
sensor json數據 query 答案 內存 table 引擎 library spark Apache Spark吸引廣大社區開發者的一個重要原因是:Apache Spark提供極其簡單、易用的APIs,支持跨多種語言(比如:Scala、Java、Python和R
Spark筆記整理(五):Spark RDD持久化、廣播變量和累加器
大數據 Spark [TOC] Spark RDD持久化 RDD持久化工作原理 Spark非常重要的一個功能特性就是可以將RDD持久化在內存中。當對RDD執行持久化操作時,每個節點都會將自己操作的RDD的partition持久化到內存中,並且在之後對該RDD的反復使用中,直接使用內存緩存的parti
Spark- RDD持久化
官方原文: RDD Persistence One of the most important capabilities in Spark is persisting (or caching) a dataset in memory across operat
Spark RDD-2-持久化&容錯機制
rdd.cache 預設呼叫persisi,之快取記憶體 def cache(): this.type = persist() rdd.persist() def persist(): this.type = persist(Sto
Spark RDD-DataFrame-DataSet三者異同
三者的共性 RDD、DataFrame、Dataset全都是spark平臺下的分散式彈性資料集,為處理超大型資料提供便利 三者都有惰性機制,在進行建立、轉換,如map方法時,不會立即執行,只有在遇到Action如foreach時,三者才會開始遍歷運算,極端情況下,如果程式碼裡面有
[2.2]Spark DataFrame操作(二)之通過反射實現RDD與DataFrame的轉換
參考 場景 檔案/home/pengyucheng/java/rdd2dfram.txt中有如下4條記錄: 1,hadoop,11 2,spark,7 3,flink,5 4,ivy,27 編碼實現:查詢並在控制檯打印出每行第三個欄位值大於7
Spark-rdd的持久化
Spark 最重要的一個功能是它可以通 過 各種操作( operations )持久化(或者 緩 存)一個集合到記憶體中。當你持久化一個 RDD 的 時 候,每一個 節 點都將參與 計 算的所有分割槽資料存 儲 到記憶體中,並且 這 些 資料可以被 這 個集
Spark中的RDD、DataFrame、Dataset對比
1 RDD RDD是Spark提供的最重要的抽象的概念,彈性的分散式資料集,它是一種有容錯機制的特殊集合,可以分佈在叢集的節點上,以函式式編操作集合的方式,進行各種並行操作。Spark的RDD內建了各種函式操作,舉個例子,我們編寫wordcount案例,如果使
《深入理解Spark》之RDD和DataFrame的相互轉換
package com.lyzx.day18 import org.apache.spark.sql.SQLContext import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.s
Spark RDD/DataFrame map儲存資料的兩種方式
使用Spark RDD或DataFrame,有時需要在foreachPartition或foreachWith裡面儲存資料到本地或HDFS。 直接儲存資料 當然如果不需要在map裡面儲存資料,那麼針對RDD可以有如下方式 val rdd = // targ
[2.3]Spark DataFrame操作(二)之通過程式設計動態完成RDD與DataFrame的轉換
參考 場景 一、上一篇部落格將待分析資料影射成JavaBean的欄位,然後通過def createDataFrame(data:java.util.List[_],beanClass:Class[_]):DataFrame完成了RDD與DataFra
一起學spark(12)-- 關於RDD和DataFrame 的快取
(1)Rdd持久化 當呼叫RDD的persist()或者cache()方法時,這個RDD的分割槽會被儲存到快取區中,Spark會根據spark.storage.memoryFraction 限制用來快取的記憶體佔整個JVM堆空間的比例大小,如果超出限制,舊的分割槽資料會被
Schema RDD(DataFrame)----Spark SQL操作
SchemaRDD是存放 Row 物件的 RDD,每個 Row 物件代表一行記錄。 SchemaRDD 還包含記錄的結構資訊(即資料欄位)。 SchemaRDD 看起來和普通的 RDD 很像,但是在內部, SchemaRDD 可以利用結構資訊更加高效地儲存資料。 此外, Sc