Spark可以直接将数据读入嵌套的case类吗?
假设您有一个包含三列的CSV:item
,username
和userid
。它是利用星火的数据集API在读这一个相当简单的事情:Spark可以直接将数据读入嵌套的case类吗?
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]
类型。
但是,假设你希望你的数据有地方Nested
由下式给出形式Dataset[Nested]
:
case class User(name: String, id: String) case class Nested(item: String, user: User)
一种方式做到这一点是将数据读入Dataset[Flat]
,然后应用map
改造它变成Dataset[Nested]
,但实际上案例类通常不需要其他任何东西,并且它使得代码不必要地冗长。有没有办法跳过中间人并直接构造Dataset[Nested]
?
回答:
有什么办法可以跳过中间人,直接构造数据集[嵌套]?
有没有 - Datasets
匹配的结构和名称。你不能只是重新设计名称和数据。
如果你喜欢跳过Flat
定义只是使用动态API
import org.apache.spark.sql.functions._ ds.select($"item", struct($"name", $"id") as "user").as[Nested]
as[Flat]
并没有真正类型检查,所以你不松任何事情。
以上是 Spark可以直接将数据读入嵌套的case类吗? 的全部内容, 来源链接: utcz.com/qa/260425.html