如何从 Spark 2.0 中的 DataFrame 列创建数据集?
Posted
技术标签:
【中文标题】如何从 Spark 2.0 中的 DataFrame 列创建数据集?【英文标题】:How to create Dataset from DataFrame column in Spark 2.0? 【发布时间】: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 产品类型
【问题讨论】:
【参考方案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")
我认为这是最简单的方法
【讨论】:
以上是关于如何从 Spark 2.0 中的 DataFrame 列创建数据集?的主要内容,如果未能解决你的问题,请参考以下文章
Spark 2.0 作为 HortonWorks 集群中的技术预览
Spark 2.0:如何将元组的 RDD 转换为 DF [重复]
我们如何在 SPARK 2.2.0 中将外部表转换为托管表?