在scala中,我想创建一个以类类型作为参数的函数。举例来说:
case class Person(name: String, age: Int)
case class Order(orderId: String, amount: Int)
def readParquet(path: String): DataFrame = {
return spark.read.parquet(path)
}
def readParquetAsDataset(path: String, MyObject: MyClassThatChange): DataFrame = {
return readParquet(path).as[MyClassThatChange]
}
最后,我可以做到:
var dsProduct = readParquetAsDataset(myPath, Product)
var dsOrder = readParquetAsDataset(myPath, Order)
我的数据集行都是用好的数据类型转换的。
1条答案
按热度按时间oxf4rvwz1#
你需要将编码器作为隐式的。注意,你的类必须是Spark productEncoder逻辑在运行时找到它们的顶层。
注意:在Scala中,你不需要使用return,除非你想跳出某段代码的执行,但这通常是你想避免的。