【发布时间】:2018-03-22 11:21:34
【问题描述】:
我想知道我们是否可以在 Scala 中打印函数的定义。函数在 Scala 中被视为对象。
例如:
scala> val splitFunction = (value : String) => { value.split(" ")}
splitFunction: String => Array[String] = <function1>
上面,Scala 交互式 shell 表明 splitFunction 有输入参数 String,它返回字符串数组。这里的 function1 到底是什么意思?
是否可以打印或检索 splitFunction 的定义?
我们可以在 python 中实现同样的效果: Is it possible to print a function as a string in Python?
更新: 在 Apache Spark 中,RDD 沿袭或 DAG 存储有关每个阶段的父 RDD 和转换的信息。我有兴趣获取用作 flatMap 或 map 等转换参数的函数(甚至是 lambda 或匿名函数)的定义。
例如:文件 - DebugTest.scala
val dataRDD = sc.textFile( "README.md" )
val splitFunction = (value : String) => {value.split(" ")}
val mapRDD = dataRDD.map(splitFunction )
println(mapRDD.toDebugString)
输出:
(1) MapPartitionsRDD[2] at map at DebugTest.scala:43 []
| README.md MapPartitionsRDD[1] at textFile at DebugTest.scala:41 []
| README.md HadoopRDD[0] at textFile at DebugTest.scala:41 []
从上面的输出中,我可以理解执行了哪些转换,但无法理解或检索在“map”转换中用作参数的 splitFunction 的定义。有没有办法检索或打印?
【问题讨论】:
标签: scala oop apache-spark user-defined-functions scala-collections