【问题标题】: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")
    

    我认为这是最简单的方法

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      • 2019-07-08
      • 2020-01-31
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      相关资源
      最近更新 更多