2014-10-28 40 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

相关问题