我有包含像這樣如何用scala/spark來計算元素的出現次數?
00|905000|20160125204123|79644809999||HGMTC|1||22|7905000|56321647569|||34110|I||||||250995210056537|354805064211510||56191|||38704||A|||11|V|81079681404134|5||||SE|||G|144|||||||||||||||Y|b00534589.huawei_anadyr.20151231184912||1|||||79681404134|0|||[email protected]@+1{79098509982}2{2}3{2}5{79644809999}6{0000002A7A5AC635}7{79681404134}|20160125|
元素的列表通過一系列的步驟的文件,我設法將其轉換爲元素的列表,這樣
(902996760100000,CompactBuffer(6, 5, 2, 2, 8, 6, 5, 3))
凡和是鍵和6,5,2,2,8,6,5,3是值。值可以是1到8之間的數字。有什麼方法可以用spark來統計這些值的出現次數,所以結果如下所示?
(902996760100000, 0_1, 2_2, 1_3, 0_4, 2_5, 2_6, 0_7, 1_8)
我可以的if else塊和人員,但不會是漂亮做到這一點,所以我想知道,如果有我能在斯卡拉/火花使用任何instrumets。
這是我的代碼。
class ScalaJob(sc: SparkContext) {
def run(cdrPath: String) : RDD[(String, Iterable[String])] = {
//pass the file
val fileCdr = sc.textFile(cdrPath);
//find values in every raw cdr
val valuesCdr = fileCdr.map{
dataRaw =>
val p = dataRaw.split("[|]",-1)
(p(1), ScalaJob.processType(ScalaJob.processTime(p(2)) + "_" + p(32)))
}
val x = valuesCdr.groupByKey()
return x
}
有關優化它的任何意見,將不勝感激。我對scala/spark非常陌生。
只是一個忠告,擺脫那些不相關的問題的範圍,代碼和信息,它使你的問題的可讀性。 – cheseaux
您可以查看規範[字數統計示例](http://spark.apache.org/examples.html)。 – erip