如何在Spark 2.0中从DataFrame列创建数据集?

时间:2016-12-06 10:32:03

标签: apache-spark apache-spark-sql parquet

是否可以在Spark 2.0中从Dataframe列创建数据集? 我有一个以下问题:我想从按日期划分的镶木地板数据中读取一些数据,然后将其中一列转换为数据集。 〔实施例:

val frame = spark.read.parquet(path).select($"date", $"object".as[MyObjectType]).filter($"date" > "2016-10-01")

现在,我需要将第二列转换为Dataset[MyObjectType]并且不明白我是如何做到这一点的。 MyObjectType是scala产品类型

1 个答案:

答案 0 :(得分:2)

你可以cast

val frame = spark.read.parquet(path)
    .select($"date", $"object".cast(MyObjectTypeUDT))
    .filter($"date" > "2016-10-01")

在这种情况下,MyObjectTypeUDT是SQL类型之一,即StringType或IntegerType或自定义UserDefinedType。

或者,如果您有一些代表数据集内容的类:

case clas DateWithObject (date : Timestamp, object: MyObject)

然后你可以写:

val frame = spark.read.parquet(path)
    .select($"date", $"object")
    .as[DateWithObject] 
    .filter($"date" > "2016-10-01")

我认为这是最简单的方法