【问题标题】:How to create Dataset from DataFrame column in Spark 2.0?如何从 Spark 2.0 中的 DataFrame 列创建数据集?
【发布时间】:2016-12-06 10:32:02
【问题描述】:
是否可以从 Spark 2.0 中的 Dataframe 列创建数据集?
我有以下问题:我想从按日期分区的镶木地板数据中读取一些数据,然后将其中一列转换为 Dataset。
示例:
val frame = spark.read.parquet(path).select($"date", $"object".as[MyObjectType]).filter($"date" > "2016-10-01")
现在,我需要将第二列转换为 Dataset[MyObjectType] 并且不明白我该怎么做。 MyObjectType 是 scala 产品类型
【问题讨论】:
标签:
apache-spark
apache-spark-sql
parquet
【解决方案1】:
你可以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")
我认为这是最简单的方法