【发布时间】:2017-12-29 21:10:52
【问题描述】:
我有一个文件如下:
dept.txt:
1,It,pune,2017-03-12
2,CS,delhi,2017-03-21
3,mech,mum,
4,fin,pune,2017-04-15
5,It,delhi,
我需要做的是:
从 2 个 RDD 中的 2 个文件中读取数据(我已经完成了)
对 dept 文件中的日期列应用过滤器并获取两个基于输出的文件 关于 null 而不是 null 值(我无法做到)
我能走多远:
val loadDept = sc.textFile("/path/to/file/dept.txt")
val cleanDept = loadDept.map(_.split(","))
val dateCol = cleanDept.filter(i => i(3) != "")
最后一行出现错误:
java.lang.ArrayIndexOutOfBoundsException: 3
我知道,由于有一个空字符串/null,我得到了一个超出范围的异常(如果我错了,请纠正我),但是如何解决它呢?
注意:我只需要在 Scala 中使用 RDD
【问题讨论】:
-
访问数组元素前先检查长度
-
@Saravana 感谢您的回复。如果您看到 dept.txt,则每行中有 4 个值,用逗号分隔。所以我相信当我分裂时,我应该得到 0,1,2,3 个位置。因此试图得到 i(3)。现在,我认为,如果您检查第 3 行“3,mech,mum”,最后一个逗号后面没有空格或没有空格,并且直接回车。因此我相信这个问题,但我不知道如何摆脱它并实现我想要的。
-
请查看答案以检查长度并根据索引 3 处的元素对结果进行分组
标签: scala apache-spark rdd