CSVに3列、item
、username
、およびuserid
があるとします。その後ds
はタイプDataset[Flat]
のものであろうSparkはネストされたケースクラスに直接データを読み込むことができますか?
case class Flat(item: String, username: String, userid: String)
ds = sparkSession.read.csv("path/to/data").toDF("item", "username", "userid").as[Flat]
:でこれを読むためにスパークのデータセットのAPIを使用するために、かなり単純な問題です。
しかし、あなたはあなたのデータはNested
は次式で与えられ、フォームDataset[Nested]
持っていることを好むだろうと仮定します。それを行うための1つの方法はDataset[Flat]
にデータを読み込み、それを変換するためにmap
を適用することです
case class User(name: String, id: String)
case class Nested(item: String, user: User)
を実際にはFlat
ケースクラスは他には必要ではないことが多く、コードを不必要に冗長にしてしまいます。仲介者をスキップして直接Dataset[Nested]
を構築する方法はありますか?
sqlContextの代わりにsparkContextを使用して読み込んだ後、前述のようにマップを使用してネストされたケースクラスに変換しましたか? –