0
我是scala的新手,我嘗試從Hadoop權威指南中執行程序最高溫度,但它在最後一次拋出錯誤數組超出限制的異常。而且我無法清楚地理解書中的代碼。根據權威指南的火花最高溫度示例
下面是代碼
import org.apache.spark.SparkContext._
import org.apache.spark.{SparkConf, SparkContext}
object MaxTemperature {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("Max Temperature").setMaster("local")
val sc = new SparkContext(conf)
val lines = sc.textFile("011990-99999-1949.txt")
val records = lines.map(_.split("\t"))
val filtered = records.filter(rec => (rec(1) != "9999"
&& rec(2).matches("[01459]")))
val tuples = filtered.map(rec => (rec(0).toInt, rec(1).toInt))
val maxTemps = tuples.reduceByKey((a, b) => Math.max(a, b))
maxTemps.foreach(println(_))
}
}
我只得到他們正在閱讀的文件和分裂和地圖功能後,我沒有得到試圖打破分割和地圖功能,以不同的RDD點但沒有得到有用的東西,任何人都可以建議我如何檢查每個步驟的輸出。
感謝&問候 阿米特
哪一行給出異常?此外,由於有明確的索引,用於「rec」,因此您依賴於輸入文件的格式,並且每行至少有3個內容 - 所以您可以說出看起來像什麼? –
問題在於輸入文本文件的格式。不應該有空行,並且每行都應該有3個或更多的製表符分隔變量。 – gonephishing
嗨,我正在嘗試處理這些文件的行,但是沒有出現在行中,我可能不知道在哪裏必須通過製表符分隔行,以便我可以獲得期望的結果。 0067011990999991949010107004 + 68750 + 023550FM-12 + 038299999V0201801N006719999999N9999999N9-00281 + 99999999999ADDAA199000591AY131999GF108991999999999999999999KA1999N-01001MW1101 0043011990999991949010112004 + 68750 + 023550FM-12 + 038299999V0201801N006719999999N9999999N9-00281 + 99999999999ADDAY131999GF108991999999999999999999MW1361 –