2017-06-28 27 views
1

是否可以使用spark並行運行多個計算?如何實現火花的垂直平行度?

例子時,可以從中受益:

  • 大型列運行列明智的任務。將StringIndexer應用於10K列可以從僅對單個工作人員進行計算以及讓儘可能多的工作人員在單列上工作中獲益。
  • 爲小數據集運行多個原子任務。例如:

    爲in_path,out_path在long_ds_list: spark.read(in_path)。選擇( '列')不同的()寫(out_path)

最接近的等同物我能想到。將是SparkR.lapply()或.Net Parallel.ForEach(),但是對於一個集羣環境,而不是簡單的多線程情況。

回答

1

我想說Spark很適合安排分佈式計算任務,並且可以輕鬆處理您的案例,但是您必須自己開發他們的解決方案。我並不是說它會花費很長時間,但需要付出很多努力,因爲它低於Spark SQL,Spark MLlib,結構化流式處理等面向開發人員的API。

您必須使用Spark Core API並創建一個自定義RDD,該RDD將知道如何描述此類計算。

讓我們來討論第一個想法。

運行大列的列式任務。將StringIndexer應用於10K列可以從僅對單個工作人員進行計算以及讓儘可能多的工作人員在單列上工作中獲益。

「逐列任務大柱」似乎表明,你想想星火SQL的DataFrames和Spark MLlib的StringIndexer變壓器。它們是不提供這些功能的更高級別的API。你不應該使用它們來處理這個問題。這是一個優化功能,所以你必須深入Spark。

我認爲您必須重寫Spark SQL和Spark MLlib中的更高級別的API,才能使用您自己優化的自定義代碼來實現該功能。

與其他要求相同,但是這次只需要關注Spark SQL(將Spark MLlib留在一邊)。

總結起來,我認爲兩者都可能有一些發展(即今天不可用)。