Spark中的订购(Scala)
我正在读取CSV文件,我只需要整个CSV文件中的某些字段。我的命令如下:Spark中的订购(Scala),scala,apache-spark,Scala,Apache Spark,我正在读取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 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异常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))
您期望的元组字段\u8、\u15、\u16、\u17在
Tuple7(…)
上不存在,这意味着它只有7个字段,但您使用的最多是\u17
。我想知道,myDouble=required\ufields.map(x=>(x.\u1,x.\u2,x.\u3,x.\u8,x.\u15.toDouble,x.\u16,x.\u17))
您能分享一些示例数据吗?
myDouble = required_fields.map(x=>(x._1,x._2,x._3,x._8,x._15.toDouble,x._16,x._17))