[英]Spark parallelization on an array of dataset
環境:Scala,火花,結構化流
If i have an array of datasets in Scala Array(Dataset[Row])
which im interested in processing in parallel using a function that processes a Dataset[Row]
object, is it enough to pass the array object through a map or foreach to utilize火花簇中的火花並行性?
編輯:我偶然發現了一些問題,我將在另一個線程中重新解釋這個問題
你的問題的簡單答案
通過 map 或 foreach 傳遞數組 object 是否足以在火花簇中利用火花並行性?
沒有。 要使 map 和 foreach 正常工作,您必須將數據收集到一個節點中。
為什么不把 Array(Dataset[Row]) 變成 Dataframe?
如果要逐行對數據運行 function,可以使用 UDF。 奇跡般有效!
我舉了一個簡單的例子來並行處理。
您需要根據您的要求編寫 function,查看以下代碼以獲取示例。
要查看並行效果,請嘗試使用 - spark-shell --master yarn --num-executors 3
啟動您的 spark shell
scala> val dsList = Seq(Seq(1,2).toDS,Seq(4).toDS,Seq(7,9).toDS,Seq(10).toDS)
scala> dsList.par.reduce(_ union _).show(false)
+-----+
|value|
+-----+
|1 |
|2 |
|4 |
|7 |
|9 |
|10 |
+-----+
scala> dsList.par.foreach(_.show(false))
+-----+
|value|
+-----+
|1 |
|2 |
+-----+
+-----+
|value|
+-----+
|4 |
+-----+
+-----+
|value|
+-----+
|7 |
|9 |
+-----+
+-----+
|value|
+-----+
|10 |
+-----+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.