首页 > 解决方案 > 如何从数据框行中获取 As[Location]("location")?

问题描述

我有一堂课Location(lat, lon),我创建了一个数据框df = Seq(Location(1,2), Location(3,4)).toDF。当我尝试这样做时:

df.map(row => 
        row.getAs[Location]("location")
      )

它失败了,因为没有Location. 但是我应该如何将其转换为Datasetof Location

我试过了:

df.map(row => 
        val seq = row.getAs[Seq[Int]]("location")
        Location(seq(0), seq(1))
      )

但它也不起作用。

我真的很困惑。我该如何解决这个问题?

标签: scalaapache-spark

解决方案


如果您已经case class Location(lat: Int, lon: Int)跟进,val df = Seq(Location(1,2), Location(3,4)).toDF您可以将此数据框df转换为数据集或将该行更改为您在val ds = Seq(Location(1,2), Location(3,4)).toDS其中一个评论中所说的内容。dsds: org.apache.spark.sql.Dataset[Location] = [lat: int, lon: int]


推荐阅读