當前位置:首頁 » 文件管理 » spark緩存

spark緩存

發布時間: 2022-02-07 07:27:32

『壹』 spark sql 會自動進行cache嗎

1.幾種緩存數據的方法
例如有一張Hive表叫做activity
1.CACHE TABLE
//緩存全表
sqlContext.sql("CACHE TABLE activity")

//緩存過濾結果
sqlContext.sql("CACHE TABLE activity_cached as select * from activity where ...")

CACHE TABLE是即時生效(eager)的,如果你想等到一個action操作再緩存數據可以使用CACHE LAZY TABLE,這樣操作會直到一個action操作才被觸發,例如count(*)
sqlContext.sql("CACHE LAZY TABLE ...")

取消hive表緩存數據
sqlContext.sql("UNCACHE TABLE activity")

『貳』 Spark中cache和persist的區別

通過觀察RDD.scala源代碼即可知道cache和persist的區別:

def persist(newLevel: StorageLevel): this.type = {
if (storageLevel != StorageLevel.NONE && newLevel != storageLevel) {
throw new UnsupportedOperationException( "Cannot change storage level of an RDD after it was already assigned a level")
}
sc.persistRDD(this)
sc.cleaner.foreach(_.registerRDDForCleanup(this))
storageLevel = newLevel
this
}
/** Persist this RDD with the default storage level (`MEMORY_ONLY`). */
def persist(): this.type = persist(StorageLevel.MEMORY_ONLY)

/** Persist this RDD with the default storage level (`MEMORY_ONLY`). */
def cache(): this.type = persist()

可知:
1)RDD的cache()方法其實調用的就是persist方法,緩存策略均為MEMORY_ONLY;
2)可以通過persist方法手工設定StorageLevel來滿足工程需要的存儲級別;
3)cache或者persist並不是action;
附:cache和persist都可以用unpersist來取消

『叄』 Spark做緩存時緩存在哪裡

緩存在executor內存里

『肆』 sparksql緩存表能做廣播變數嗎

共享變數
通常情況下,當向Spark操作(如map,rece)傳遞一個函數時,它會在一個遠程集群節點上執行,它會使用函數中所有變數的副本。這些變數被復制到所有的機器上,遠程機器上並沒有被更新的變數會向驅動程序回傳。在任務之間使用通用的,支持讀寫的共享變數是低效的。盡管如此,Spark提供了兩種有限類型的共享變數,廣播變數和累加器。

廣播變數
廣播變數允許程序員將一個只讀的變數緩存在每台機器上,而不用在任務之間傳遞變數。廣播變數可被用於有效地給每個節點一個大輸入數據集的副本。Spark還嘗試使用高效地廣播演算法來分發變數,進而減少通信的開銷。
Spark的動作通過一系列的步驟執行,這些步驟由分布式的洗牌操作分開。Spark自動地廣播每個步驟每個任務需要的通用數據。這些廣播數據被序列化地緩存,在運行任務之前被反序列化出來。這意味著當我們需要在多個階段的任務之間使用相同的數據,或者以反序列化形式緩存數據是十分重要的時候,顯式地創建廣播變數才有用。

通過在一個變數v上調用SparkContext.broadcast(v)可以創建廣播變數。廣播變數是圍繞著v的封裝,可以通過value方法訪問這個變數。舉例如下:

scala> val broadcastVar = sc.broadcast(Array(1, 2, 3))
broadcastVar: org.apache.spark.broadcast.Broadcast[Array[Int]] = Broadcast(0)

scala> broadcastVar.value
res0: Array[Int] = Array(1, 2, 3)

在創建了廣播變數之後,在集群上的所有函數中應該使用它來替代使用v.這樣v就不會不止一次地在節點之間傳輸了。另外,為了確保所有的節點獲得相同的變數,對象v在被廣播之後就不應該再修改。

累加器
累加器是僅僅被相關操作累加的變數,因此可以在並行中被有效地支持。它可以被用來實現計數器和總和。Spark原生地只支持數字類型的累加器,編程者可以添加新類型的支持。如果創建累加器時指定了名字,可以在Spark的UI界面看到。這有利於理解每個執行階段的進程。(對於python還不支持)
累加器通過對一個初始化了的變數v調用SparkContext.accumulator(v)來創建。在集群上運行的任務可以通過add或者"+="方法在累加器上進行累加操作。但是,它們不能讀取它的值。只有驅動程序能夠讀取它的值,通過累加器的value方法。
下面的代碼展示了如何把一個數組中的所有元素累加到累加器上:

scala> val accum = sc.accumulator(0, "My Accumulator")
accum: spark.Accumulator[Int] = 0

scala> sc.parallelize(Array(1, 2, 3, 4)).foreach(x => accum += x)
...
10/09/29 18:41:08 INFO SparkContext: Tasks finished in 0.317106 s

scala> accum.value
res2: Int = 10

盡管上面的例子使用了內置支持的累加器類型Int,但是開發人員也可以通過繼承AccumulatorParam類來創建它們自己的累加器類型。AccumulatorParam介面有兩個方法:
zero方法為你的類型提供一個0值。
addInPlace方法將兩個值相加。
假設我們有一個代表數學vector的Vector類。我們可以向下面這樣實現:

object VectorAccumulatorParam extends AccumulatorParam[Vector] {
def zero(initialValue: Vector): Vector = {
Vector.zeros(initialValue.size)
}
def addInPlace(v1: Vector, v2: Vector): Vector = {
v1 += v2
}
}

// Then, create an Accumulator of this type:
val vecAccum = sc.accumulator(new Vector(...))(VectorAccumulatorParam)
在Scala里,Spark提供更通用的累加介面來累加數據,盡管結果的類型和累加的數據類型可能不一致(例如,通過收集在一起的元素來創建一個列表)。同時,SparkContext..accumulableCollection方法來累加通用的Scala的集合類型。

累加器僅僅在動作操作內部被更新,Spark保證每個任務在累加器上的更新操作只被執行一次,也就是說,重啟任務也不會更新。在轉換操作中,用戶必須意識到每個任務對累加器的更新操作可能被不只一次執行,如果重新執行了任務和作業的階段。
累加器並沒有改變Spark的惰性求值模型。如果它們被RDD上的操作更新,它們的值只有當RDD因為動作操作被計算時才被更新。因此,當執行一個惰性的轉換操作,比如map時,不能保證對累加器值的更新被實際執行了。下面的代碼片段演示了此特性:

val accum = sc.accumulator(0)
data.map { x => accum += x; f(x) }
//在這里,accum的值仍然是0,因為沒有動作操作引起map被實際的計算.

『伍』 spark緩存是文件大於物理內存是如何處理的

這種情況,要切換一下盤符輸入e:,即可,並且路徑已經是work了這個是dos的基礎,與python倒是無關,不過會困擾你

『陸』 如何把spark sql的dataset緩存

SparkSession 是 SparkSQL 的入口,然後可以基於 sparkSession 來獲取或者是讀取源數據來生存 DataFrameReader,在 Spark 2.x 版本中已經沒有 DataFrame 的 API,它變成了 DataSet[Row] 類型的數據。

『柒』 怎麼清除Spark的緩存

spark緩存清理機制:
MetadataCleaner對象中有一個定時器,用於清理下列的元數據信息:
MAP_OUTPUT_TRACKER:Maptask的輸出元信息SPARK_CONTEXT:persistentRdds中的rddHTTP_BROADCAST, http廣播的元數據
BLOCK_MANAGER:blockmanager中存儲的數據SHUFFLE_BLOCK_MANAGER:shuffle的輸出數據BROADCAST_VARS:Torrent方式廣播broadcast的元數

『捌』 到底spark 緩存機制怎麼用

你是指自動儲存的間隔時間嗎到這里看看:工具--選項--保存--保存自動恢復裡面有設置「自動恢復」的選項,你可以設置緩存時間,也可以設置保存的目錄,

『玖』 spark通過哪些參數組成緩存策略

你是指自動儲存的間隔時間嗎到這里看看:工具--選項--保存--保存
自動恢復
裡面有設置「自動恢復」的選項,你可以設置緩存時間,也可以設置保存的目錄,

『拾』 spark中cache方法的參數有哪些

1,影響CPU的性能最大的是CPU的架構,就如Haswell架構對比Thuban架構,其性能差距很大。 2,然後到CPU的核心數,核心數越多,多任務越強。 3,最後到CPU頻率和緩存大小,頻率越高,緩存越大,性能越好。

熱點內容
自助下單平台源碼 發布:2024-10-23 11:16:28 瀏覽:949
等六演算法 發布:2024-10-23 11:11:00 瀏覽:282
android微信好友 發布:2024-10-23 11:06:37 瀏覽:951
wind如何看電腦配置 發布:2024-10-23 11:06:26 瀏覽:39
win7刪除文件夾命令 發布:2024-10-23 10:59:13 瀏覽:540
jdk是編譯 發布:2024-10-23 10:53:13 瀏覽:16
編譯原理dag 發布:2024-10-23 10:47:20 瀏覽:629
欄位間接編譯法相關例題 發布:2024-10-23 10:46:37 瀏覽:218
編程的階梯 發布:2024-10-23 10:46:28 瀏覽:953
win解壓安卓版 發布:2024-10-23 10:40:32 瀏覽:508