2014-10-28 41 views
0

因此,我正在按照spark using scala上的教程進行操作,並使用this dataset from wikimedia。我有興趣通過語言生成總頁面瀏覽量的直方圖。第一列是語言,第三列是頁面瀏覽。但是,似乎該數據庫中的某些行沒有第三列的任何字段,因爲運行以下代碼時出現ArrayIndexOutOfBondException錯誤。如何忽略數據庫中缺失字段的行

scala> val tuples = pagecounts.map(line => line.split(" ")) 
scala> val keyValuePairs = tuples.map(line => (line(0).substring(0, 2), 
    line(2).toInt)) 
scala> keyValuePairs.reduceByKey(_+_, 1).collect 

有沒有人有一個想法,怎麼不理它具有針對第三列缺場的線條,讓我可以運行只針對那些包含的字段在數據庫中的第三列線查詢?

回答

2

您想篩選頁面計數,以便只有具有3個字段的頁面正在被操作。使用filter來選擇那些:

val tuples = pagecounts.map(line => line.split(" ").filter(_.length == 3)) 
+0

感謝鮑勃。但事實證明,缺少領域並不是問題。我不知道爲什麼我仍然會出現錯誤。這可能是由於包含中文或日文等字符的文件嗎? – MetallicPriest 2014-10-28 16:44:47

+0

沒有堆棧跟蹤或更多的上下文,很難說。你確定它是一個數組超出界限的錯誤嗎?當字符串長度錯誤時,您可能會收到「java.lang.StringIndexOutOfBoundsException:String index out of range」錯誤。 – 2014-10-28 17:39:03

相關問題