Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 当值的数目未知时,如何从一行空间分隔的值中提取RDD映射?_Scala_Apache Spark - Fatal编程技术网

Scala 当值的数目未知时,如何从一行空间分隔的值中提取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的内容,该怎么办。如何处理

我的输入文件有空格分隔的值,第一个是索引。我正在将其转换为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
的内容,该怎么办。如何处理此问题?

使用
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