错误:值拆分不是(String,Int)的成员

时间:2019-05-30 14:40:09

标签: scala apache-spark rdd

我必须在List上使用foldByKey才能找到每个项目的最高价格。 我正在使用的数据是:

val itemPrice= List(("Soap",10),("Toaster",200),("Tshirt",400),("Tshirt",1000),("Suits",8000),("Suits",17000),("Soap",100))

当我尝试将列表拆分为单独的小项目时,出现错误:

 error: value split is not a member of (String, Int)

我想将列表拆分为单个小列表,然后像

一样在其上应用foldbykey
val a = itemPrice.map(st =>st.split(",")).foldByKey(("dummy",0.0))((acc,element)=> if (acc._2>element._2) acc else element)

请帮助我找到解决方法。 代码审查和更正会很有帮助。

1 个答案:

答案 0 :(得分:1)

您似乎想通过此example使它正常工作。

如您所见,您不需要split。您有2个选择:

1)使用fold-

itemPrice.fold(("dummy", 0.0))((acc, element) => {
  (acc,element)=> if (acc._2>element._2) acc else element
})

2)使用foldByKey,但在这种情况下,您需要具有以下元组: List(("a", ("Soap",10)), ("b", ("Toaster", 200))) ..

然后:

`itemPrice.foldByKey(("dummy", 0.0))((acc, element) => {
  (acc,element)=> if (acc._2>element._2) acc else element
})

同样,完全不需要使用split