Scala 当值的数目未知时,如何从一行空间分隔的值中提取RDD映射?
我的输入文件有空格分隔的值,第一个是索引。我正在将其转换为RDD映射。我对固定数量的值做了修改。如果我不知道一行中有多少个值,你能建议我怎么做吗Scala 当值的数目未知时,如何从一行空间分隔的值中提取RDD映射?,scala,apache-spark,Scala,Apache Spark,我的输入文件有空格分隔的值,第一个是索引。我正在将其转换为RDD映射。我对固定数量的值做了修改。如果我不知道一行中有多少个值,你能建议我怎么做吗 val vectors = inputfile.map(line => { val a = line.split(" "); (a(0))->(a(1), a(2), a(3))}) 在上面的一行中,我能够将前四个值放入一个数组中,其形式为(1,(4,5,6))。 如果输入文件中有类似于1 4 5 6 38 24的内容,该怎么办。如何处理
val vectors = inputfile.map(line => { val a = line.split(" "); (a(0))->(a(1), a(2), a(3))})
在上面的一行中,我能够将前四个值放入一个数组中,其形式为(1,(4,5,6))
。
如果输入文件中有类似于
1 4 5 6 38 24
的内容,该怎么办。如何处理此问题?使用head
和tail
方法:
val s = sc.parallelize(Seq("1 2 3 4 5", "2 1 3 4"))
s.map(line => {
val fields = line.split(" ")
Map(fields.head -> fields.tail)
}).collect
// res16: Array[scala.collection.immutable.Map[String,Array[String]]] =
// Array(Map(1 -> Array(2, 3, 4, 5)), Map(2 -> Array(1, 3, 4)))
哦,对不起。第一天的错误:p