2015-03-13 71 views
-2

我的任務是弄清楚如何擴展spark的api,以包含iPython Notebook等其他程序的一些自定義鉤子以鎖定。我已經通過了quick start guide,the cluster mode overviewsubmitting applications docthis stack overflow question。一切我看到指示,如果要得到的東西在星火運行,你需要使用如何擴展apache spark api?

火花提交

做到這一點。因此,我掀起了一些代碼,這些代碼可以從我創建的accumulo表中抽出10行測試數據。然而,我的團隊領導正告訴我修改火花本身。這是完成我描述的任務的首選方式嗎?如果是這樣,爲什麼?什麼是價值主張?

+0

真的嗎?通過倒票驅動?這位男士,這是膽怯的。是否真的很難閱讀這個問題並發表一些深思熟慮的批評? – 2015-03-13 19:50:48

+0

請詳細說明「自定義鉤子」:你試圖達到什麼目的(不,我沒有downvote:你的問題是一個合理的開始)。特別是 - SqlContext或RDD需要額外的功能嗎?或者你可以結合現有的實現你的需求? – javadba 2015-03-13 21:11:30

+0

@javadba - thx的回覆 - 如果你投降了,這將會非常酷!我最近非常沮喪,因爲SO的政策是允許匿名駕駛 - 通過投票。我們正在努力在spark和accumulo之間建立一個鏈接,以使像Notebook這樣的東西可以坐在火花之上並訪問accumulo數據,使用spark來執行地圖縮減操作等,以及完全需要什麼 - 在這一點上,我沒有'噸從我的領導收到細節。但是,他確實指出了幾何尺寸,並告訴我閱讀他們的代碼,我現在正在做這些代碼。 – 2015-03-13 21:21:06

回答

1

沒有提供有關您的應用程序需要什麼類型的操作的詳細信息,因此這裏的答案將需要保持一般性質。

延長火花本身可以歸結爲一個問題:

我可以通過利用星火內現有 方法(/ SQL /蜂巢/流)上下文和RDD 實現應用的需求(/SchemaRDD/DSTREAM/..)

額外的選擇:

是否有可能嵌入所需的泛函在RDD的 轉換方法中 - 可以通過自定義代碼或通過調用第三方庫來實現。

如果現有的數據訪問和混洗/分配結構支持您的需求,這裏可能的區別因素是。談到數據轉換 - 在大多數情況下,您應該能夠在RDD的方法中嵌入所需的邏輯。

所以:

case class InputRecord(..) 
case class OutputRecord(..) 
def myTranformationLogic(inputRec: InputRecord) : OutputRecord = { 
    // put your biz rules/transforms here 
    (return) outputRec 
} 
val myData = sc.textFile(<hdfs path>).map{ l => InputRecord.fromInputLine(l)} 
val outputData = myData.map(myTransformationLogic) 
outputData.saveAsTextFile(<hdfs path>) 
+0

讓我們假設爲了爭論,我的領導想到的是Spark的股票版本中沒有提供的內容。根據您的估計,什麼是使用spark-submit擴展spark和vs的好處?此外,這裏是我正在巡航的geomesa代碼的鏈接,因爲它顯然延伸了火花以使其神奇發生 – 2015-03-13 21:29:42

+0

首選的方法顯然是編寫存儲在Spark RDD庫存轉換步驟中的代碼(並因此通過火花-提交)。這不是關於性能,而是關於努力和可維護性。 – javadba 2015-03-13 21:34:11

+0

展開:您不會通過第一次選擇更改Web服務器的源代碼。而是將代碼添加到servlet以執行您所需的操作。 – javadba 2015-03-13 21:35:31