我的目标是拥有一个sparkDataframe来保存我的每个 Candy
单独行中的对象及其各自的属性
+------------------------------------+
main
+------------------------------------+
{"brand":"brand1","name":"snickers"}
+------------------------------------+
{"brand":"brand2","name":"haribo"}
+------------------------------------+
概念证明的案例类
case class Candy(
brand: String,
name: String)
val candy1 = Candy("brand1", "snickers")
val candy2 = Candy("brand2", "haribo")
到目前为止,我只把它们放在同一行:
import org.json4s.DefaultFormats
import org.json4s.jackson.Serialization.{read, write}
implicit val formats = DefaultFormats
val body = write(Array(candy1, candy2))
val df=Seq(body).toDF("main")
df.show(5, false)
把所有的东西都放在一排而不是两排。如何将每个对象拆分为自己的行,同时维护自己的架构 Candy
反对?
+-------------------------------------------------------------------------+
| main |
+-------------------------------------------------------------------------+
|[{"brand":"brand1","name":"snickers"},{"brand":"brand2","name":"haribo"}]|
+-------------------------------------------------------------------------+
1条答案
按热度按时间flvlnr441#
是否要将该项作为json字符串保留在Dataframe中?
如果没有,可以这样做,使用数据集的advatange功能来处理case类:
这将为您提供以下输出:
这是最好的选择,但是如果您想将数据保持为json字符串,那么您可以首先定义一个
toJson
case类中的方法:然后使用该方法构建df:
输出