在 Dataframes 或 TempViews 中存盤中間表有什么區別?記憶體有區別嗎?
uj5u.com熱心網友回復:
您可以將 TempView 視為只要底層 Spark 會話未關閉就存在的臨時 hive 表。
因此,如果您有一個 dataframedf并 run df.createOrReplaceTempView("something"),您可以通過val df = spark.table("something")專案中的任何位置(在同一個 Spark 會話中)檢索 df ,只要createOrReplaceTempView首先呼叫 。
此處的其他資訊createOrReplaceTempView 如何在 Spark 中作業?
uj5u.com熱心網友回復:
Dataframes本身是中間的“表格”。可以快取到記憶體和/或磁盤。我通過 Catalyst 撇開代碼的概念。
從手冊上tempviews:
以編程方式運行 SQL 查詢
SparkSession 上的 sql 函式使應用程式能夠以編程方式運行 SQL 查詢并將結果作為 DataFrame 回傳。
為此,您將 dataFrame 注冊為 SQL 臨時視圖。這是一個“懶惰”的人工制品,必須已經存在資料框/資料集。它只需要注冊以允許 SQL 介面。
Caching在重復訪問方面,底層資料幀的幫助。- tempview 是記憶體中對資料幀的參考,通常沒有開銷。
總而言之,在 Spark 應用程式中,資料幀是一個臨時資料存盤/中間表,您可以對后者進行爭論。如果您需要針對資料幀 API 無法處理的資料幀的復雜 SQL,那么我們使用臨時視圖。這與針對真正的 Hive 或 jdbc 讀取表觸發 sql 不同,但界面是相同的。
順便說一句,這是一個很好的參考:https : //medium.com/@kar9475/data-sharing-between-multiple-spark-jobs-in-databricks-308687c99897
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/327805.html
上一篇:使Spark代碼更高效、更簡潔
