簡體   English   中英

數據集數組上的 Spark 並行化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM