我正在读取 CSV 文件,我只想要整个 CSV 中的某些字段,我的命令如下:
val readfile = sc.textFile("path").map(m=>m.split(",").filterNot(._startsWith("NA")))
val required_fields = readfile.map(x=>(x(0),x(1),x(2),x(8),x(15),x(16),x(17)))
现在我想将第 15 列的类型从 String 更改为 Double。所以我做了这个,
val myDouble = required_fields.map(x=>(x._1,x._2,x._3,x._8,x._15.toDouble,x._16,x._17))
现在我只需要从第 15 列中取前 10 个值,所以我使用了 takeOrdered 函数
myDouble.takeOrdered(10)(Ordering[Double].on(x=>(-x._5)))
但是当我运行最后一个命令时,我得到 ArrayIndexOutOfBound Exception 17。
请帮帮我。谢谢。
val readfile = sc.textFile("path").map(m=>m.split(",").filterNot(._startsWith("NA")))
val required_fields = readfile.map(x=>(x(0),x(1),x(2),x(8),x(15),x(16),x(17)))
第二行相当于
val required_fields = readfile.map(x=> Tuple7(x(0),x(1),x(2),x(8),x(15),x(16),x(17)))
也就是说,您的元组有 7 个字段。
你的问题就在这里。
myDouble = required_fields.map(x=>(x._1,x._2,x._3,x._8,x._15.toDouble,x._16,x._17))
您期望元组字段_8,_15,_16,_17不存在,Tuple7(...)
这意味着它只有 7 个字段,但您使用的是 upto _17
。我想知道,您如何没有收到任何编译时错误myDouble = required_fields.map(x=>(x._1,x._2,x._3,x._8,x._15.toDouble,x._16,x._17))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句