【发布时间】:2018-05-31 08:44:18
【问题描述】:
假设您有一个包含三列的 CSV:item、username 和 userid。使用 Spark 的 Dataset API 读取这个内容是一件相当简单的事情:
case class Flat(item: String, username: String, userid: String)
ds = sparkSession.read.csv("path/to/data").toDF("item", "username", "userid").as[Flat]
那么ds 将是Dataset[Flat] 类型。
但是假设您希望您的数据具有Dataset[Nested] 的形式,其中Nested 由下式给出:
case class User(name: String, id: String)
case class Nested(item: String, user: User)
一种方法是将数据读入Dataset[Flat],然后应用map 将其转换为Dataset[Nested],但实际上Flat 案例类通常不需要任何东西否则,它会使代码不必要地冗长。有没有什么办法可以跳过中间人直接构造一个Dataset[Nested]?
【问题讨论】:
-
您是否尝试使用 sparkContext 而不是 sqlContext 读取它,然后使用您提到的映射将其转换为嵌套案例类?
-
火花糟糕的众多原因之一 - 它不能这样做
标签: scala apache-spark apache-spark-dataset