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 如何处理索引值_Scala_Apache Spark_Apache Spark Sql_Sparkcore - Fatal编程技术网

Scala 如何处理索引值

Scala 如何处理索引值,scala,apache-spark,apache-spark-sql,sparkcore,Scala,Apache Spark,Apache Spark Sql,Sparkcore,这是文本文件格式的数据。我需要找到每个城市的最高工资 first_name last_name city county salary -------------------------------------------------------- James Butt New Orleans Orleans 250000 Josephine Darakjy Brighton Livingston 30000

这是文本文件格式的数据。我需要找到每个城市的最高工资

first_name  last_name city          county       salary
--------------------------------------------------------
James        Butt     New Orleans   Orleans      250000
Josephine   Darakjy   Brighton      Livingston   300000
Art         Venere    Bridgeport    Gloucester   400000
Leota      Dilliard    Bridgeport   Gloucester   430000

> val scq = sc.textFile("path.txt")

> scq.flatMap(al=>al.split("\n")).sortBy(_._5,ascending = false).collect.take(5).foreach(println)
// sorting on salary 
但是我得到了错误,因为
value\u 5不是字符串的成员
,当我使用
toString
时,它给出了错误
value\u 5不是char
的成员。 应该如何处理?

试试这个:

> val scq = sc.textFile("path.txt")
> val d = scq.map(_.split("\t")).sortBy(_.apply(4), ascending = false)
这将产生一个
RDD[Array[String]]
作为输出。如果要将它们视为元组,可以执行以下操作:

> val d1 = d.map(c => (c(0), c(1), c(2), c(3), c(4))) // Prefer case class over this always
> d.collect.foreach(println)
这将产生以下输出:

(Leota,Dilliard,Bridgeport,Gloucester,430000)
(Art,Venere,Bridgeport,Gloucester,400000)
(Josephine,Darakjy,Brighton,Livingston,300000)
(James,Butt,New Orleans,Orleans,250000)

split
返回将使用
arr(4)
访问其第5个元素的
Array
<代码>元组。_5用于访问元组的第5个元素。此外,您可能需要使用
\n
以外的内容拆分文件,因为
textFile
已经为您进行了拆分。整行被视为字符串类型的一列。按行拆分后,必须使用分隔符分隔列。然后,只有您可以使用
\u 5
@philantrovert我做了,但却得到了错误值\u 5不是org.apache.spark.rdd.rdd[Array[String]@SivaprasannaSethuraman val againmap=flatma.map(_.split(“\t”))的成员我正在使用它,但仍然不起作用。@RaviAnand你有没有正确阅读philantrovert的评论?我这样做了,但我得到了[Ljava.lang.String;@3bd1d3ae[Ljava.lang.String;@27b88459[Ljava.lang.String;@4900e064][Ljava.lang.String;@794C64E6就像我说的那样,这是
RDD[]数组[String]
。如果你做
d.map(c=>(c(0),c(1),c(2),c(3),c(4))
你将得到RDD元组