我对Scala Spark还比较新,有一个关于map方法的问题。
我的理解是:map是RDD方法,它接受一个函数作为参数,例如:map(line => line.split(","))
我发现这种表达方式很难理解。
val uniqueUsers = data.map { case (user, product, price) => user }.distinct().count()
有两个问题需要解释:
- 为什么要使用{}而不是()
- 我能否将
case (user, product, price) => user
视为函数?如果不是,那它是什么?
提前感谢您的帮助。
{ case (user, product, price) => user }
是一个特殊的函数 PartialFunction。但是data.map({ case (user, product, price) => user })
看起来更容易理解,它也是合法的吗? - Phildata.map({ case (user, product, price) => user })
是合法的。你只是将部分函数({ case (user, product, price) => user }
作为输入传递给了你的 map 函数。在 Scala 中,object.funtion(arg)
和object function arg
都是有效的,你可以使用任何一种形式。 - rogue-one