【问题标题】:error: value split is not a member of (String, Int)错误:值拆分不是 (String, Int) 的成员
【发布时间】:2019-05-30 14:40:08
【问题描述】:

我必须在 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)

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

【问题讨论】:

  • 请格式化您的代码并提供预期的输出。请参考How to Ask & MCVE
  • 如果你想创建一个列表列表,你要做的是st.map(List(_))。您只能在字符串上使用split
  • 问题 1:("Soap",10) 是一个元组,而不是一个字符串。

标签: scala apache-spark rdd


【解决方案1】:

看起来你想通过这个example 让它工作。

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

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

【讨论】:

    猜你喜欢
    • 2017-11-15
    • 2017-08-22
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    相关资源
    最近更新 更多