【发布时间】:2016-01-10 03:36:04
【问题描述】:
我映射了从文本文件中获取的数据。文本文件应该有 5 列。例如
29000000 1 0 2013 1 single-sex
29000000 1 0 2013 1 education
29000000 1 0 2013 1 and
29000000 1 0 2013 1 the
29000000 1 0 2013 1 brain
在我的过程中,我只需要出现在第 0 列和第 5 列的值。所以为了得到那些我写了以下内容:
val emp =
sc.textFile("\\.txt")
.map{line => val s = line.split("\t"); (s(5),s(0))}
但是,有时某些行的第 5 列可能不存在,我得到了
15/10/12 17:19:33 INFO TaskSetManager:在执行程序 localhost 的阶段 0.0 (TID 27) 中丢失任务 27.0:java.lang.ArrayIndexOutOfBoundsException (5)
那么在我的映射中,如果 s(5) 存在与否,我应该如何编写 if 条件?
【问题讨论】:
-
在这种情况下,您的应用程序的业务逻辑需要您做什么?我的意思是,您应该忽略这些记录还是应该以不同的方式行事?
-
您似乎知道数组是从零开始的,并且由于它们是五个项目,这意味着索引是
0, 1, 2, 3, 4。 5 表示第六行。 -
我的帖子中有 6 个字段。铍的方法效果很好。
标签: scala apache-spark