我是新的斯卡拉,顯然不明白爲什麼這段代碼不起作用。斯卡拉。映射後的空變量
我從第一數據幀創建陣列,並創建第二陣列時開始檢查在兩個陣列相同的數據。 在相同數據的情況下 - 實現可變文本。
var text = "Hello!"
val dfOriginDate = sqlContext.sql("SELECT name, age FROM table2")
val arrOriginDate = dfOriginDate.rdd.map(r => {
r(0).toString + r(1).toString
}).collect()
val dfNewDate = sqlContext.sql("SELECT name, age FROM table")
dfNewDate.rdd.map(r => {
if (arrOriginDate contains(r(0).toString + r(1).toString)) {
text += "found some stupid things"
print(text + " for the first time\r\n")
}
}).collect()
println(text + " for the second time")
在輸出時我有這樣的:
Hello! found some stupid things for the first time
Hello! for the second time
爲什麼當我打印文本映射的變量正在實施一段時間,但是當我地圖後,再打印出來 - 好像它從來沒有在地圖?
__
,當我想用ListBuffer[String]()
做到這一點給了我同樣的效果。
我試圖用這個代碼做的事情 - 從卡桑德拉 __ 發現在不同的表相同的數據不知道是什麼的答案是更好> <都可以接受我的問題=)
謝謝!我認爲我需要閱讀一些關於Scala \ Spark組合的書籍=) – ANTVirGEO
作爲學習使用不可序列化的類的嘗試的一種方法(與String不同)。你會得到一個對象不可序列化的異常。代碼運行期間發生的情況如下:您在並行上下文中引用來自本地上下文的變量。該變量被序列化,並通過網絡(如果任務在不同的機器上運行,則通過網絡)傳遞給映射器。 – Sohaib