Dat*_*eek 2 scala apache-spark
这是一个示例 Spark 代码,它将 转换Seq为Dataset:
import spark.implicits._
val s = Seq(1, 2, 3, 4)
val ds = s.toDS()
Run Code Online (Sandbox Code Playgroud)
ScalaSeq没有该toDS方法,它来自 Spark 隐式。这里的数据集是如何创建的?
编辑:我确实查看了其他 SO 答案,但看不到一个示例,该示例将解释如何在s.toDS. 我在评论中引用了示例答案。
Scala 有一种向现有类添加方法的方法,例如 Kotlin 中的扩展方法(我记得还有 C#),但它以不同的方式通过隐式实现。
要将方法添加到现有类,首先创建隐式类:
object StringImplicits {
implicit class StringUtils(s: String) {
def someCoolMethod = println("Yooo")
}
}
object Application extends App {
import StringImplicits._
val s = "Hello"
s.someCoolMethod
}
Run Code Online (Sandbox Code Playgroud)
你把这个StringUtils和可以调用someCoolMethod上的实例String
请注意,StringUtils类String作为构造函数参数。
在调用某个方法时String,scala 编译器首先在String类中。
如果它没有找到它,它将查找带String参数的导入的隐式类。
如果找到,它将调用该类中的方法。
如果没有找到这样的类,它将引发错误。
| 归档时间: |
|
| 查看次数: |
3128 次 |
| 最近记录: |