将 Spark 数据集作为函数参数传递
Passing Spark Dataset as an function argument
我想将 Spark 数据集作为参数传递给函数。例如
case class Token1(name: String, productId: Int, score: Double)
val data1 = Seq(
Token1("aaa", 100, 0.12),
Token1("aaa", 200, 0.29),
Token1("bbb", 200, 0.53),
Token1("bbb", 300, 0.42))
val ds1 = data1.toDS()
case class Token2(name: String, productId: Int)
val data2 = Seq(
Token2("aaa", 100),
Token2("aaa", 200),
Token2("bbb", 200),
Token2("bbb", 300))
val ds2 = data2.toDS()
def printDS(ds:Dataset[T]): Unit ={
ds.show()
}
printDS(ds1)
printDS(ds2)
我想将不同的数据集传递给 printDS()。由于 Spark 数据集是强类型的,如何将 Dataset[Token1] 或 Dataset[Token2] 传递给接受 Dataset[Any] 的 printDS()?我可以将 Spark Dataframes 作为函数参数传递,而不是 Spark Dataset。
只需在 printDS 方法中使用类型参数:
def printDS[T](ds:Dataset[T]): Unit = {
ds.show()
}
我想将 Spark 数据集作为参数传递给函数。例如
case class Token1(name: String, productId: Int, score: Double)
val data1 = Seq(
Token1("aaa", 100, 0.12),
Token1("aaa", 200, 0.29),
Token1("bbb", 200, 0.53),
Token1("bbb", 300, 0.42))
val ds1 = data1.toDS()
case class Token2(name: String, productId: Int)
val data2 = Seq(
Token2("aaa", 100),
Token2("aaa", 200),
Token2("bbb", 200),
Token2("bbb", 300))
val ds2 = data2.toDS()
def printDS(ds:Dataset[T]): Unit ={
ds.show()
}
printDS(ds1)
printDS(ds2)
我想将不同的数据集传递给 printDS()。由于 Spark 数据集是强类型的,如何将 Dataset[Token1] 或 Dataset[Token2] 传递给接受 Dataset[Any] 的 printDS()?我可以将 Spark Dataframes 作为函数参数传递,而不是 Spark Dataset。
只需在 printDS 方法中使用类型参数:
def printDS[T](ds:Dataset[T]): Unit = {
ds.show()
}