Phi*_*hil 3 scala apache-spark
我对Scala Spark比较陌生.我有一个map方法的问题.
我的理解:map是一个RDD方法,它接受一个函数作为其参数,如:map(line => line.split(","))
我发现很难理解这种表达方式.
val uniqueUsers = data.map { case (user, product, price) => user }.distinct().count()
Run Code Online (Sandbox Code Playgroud)
有人可以为我解释两件事:
case (user, product, price) => user视为一种功能吗?如果没有,那是什么?先感谢您.
在Scala中,语法{ case arg => body }是部分函数.
从Scala-Doc定义部分功能
PartialFunction [A,B]类型的部分函数是一元函数,其中域不一定包括类型A的所有值.函数isDefinedAt允许动态测试值是否在函数域中.
在您{ case (user, product, price) => user }已定义部分函数的情况下,将Tuple3对象作为输入.这个Tuple3对象被解压缩为3个变量user,product并且price函数体只返回user.
所以回答你的问题
为什么{}不使用()
因为部分函数必须用花括号包裹.
我认为案例(用户,产品,价格)=>用户作为一种功能?如果没有,那是什么?
是.{ case (user, product, price) => user }是一种称为PartialFunction的特殊类型的函数,它仅为特定输入定义,不为其他输入定义.在您的情况下,PartialFunction仅定义为输入Tuple3[T1,T2,T3]T1,T2和T3是用户,产品和价格对象的类型
| 归档时间: |
|
| 查看次数: |
4240 次 |
| 最近记录: |