[英]Processing Hive Lookup tables in Spark vs Spark Broadcast variables
我有兩個數據集,名稱分別為dataset1
和dataset2
, dataset1
就像
empid empame
101 john
102 kevin
和dataset2
就像
empid empmarks empaddress
101 75 LA
102 69 NY
dataset2
將非常龐大,我需要對這兩個數據集進行一些運算,並且需要從上述兩個datasets
獲取結果。 據我所知,現在我有兩個選擇來處理這些數據集:
1.將數據集1 (較小的數據集)存儲為配置單元查找表,並必須通過Spark處理它們
2.通過使用Spark廣播變量,我們可以處理這些dataset
。
任何人都可以建議我哪個是更好的選擇。
這應該比上面提到的兩個選項更好。
由於您具有公共密鑰,因此可以進行內部聯接。
dataset2.join(dataset1, Seq("empid"), "inner").show()
您也可以像這樣使用broadcast
功能/提示。 這意味着您要告訴框架,應將小型數據框(即dataset1)廣播給每個執行者。
import org.apache.spark.sql.functions.broadcast
dataset2.join(broadcast(dataset1), Seq("empid"), "inner").show()
另請參閱以獲取更多詳細信息。
DataFrame聯接優化-廣播哈希聯接廣播聯接將如何工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.