scala—如何编写一个模式,为下面只有一列的数据创建一个表

ajsxfq5m  于 2021-05-29  发布在  Spark
关注(0)|答案(1)|浏览(332)
[c3f36c25-2546-48b2-bd72-1b5e5dcae2ab, 1620247529, 6032, Amoma, 17256, false, Tui.com, 17149, false]
c3f36c25-2546-48b2-bd72-1b5e5dcae2a- userid
1620247529- timestamp
6032-parkid
Amoma-parkname
17256-cost
false -dinner

在这里。。park id是包含amoma的maptype,mercury amoma是包含cost和dinner的数组类型。。需要为此编写架构

ttisahbt

ttisahbt1#

尝试下面的模式&如果不起作用,请添加更多的示例数据。

scala> case class Advertise(eurocents: Int,breakfast: Boolean)
defined class Advertise

scala> case class Advertisers(advertisers:Map[String,Seq[Advertise]])
defined class Advertisers

scala> case class Record(userId: String,unix_time: String,parkid:Map[String,Advertisers])
defined class Record

scala> val schema = Encoders.product[Record].schema
schema: org.apache.spark.sql.types.StructType = StructType(StructField(userId,StringType,true), StructField(unix_time,StringType,true), StructField(parkid,MapType(StringType,StructType(StructField(advertisers,MapType(StringType,ArrayType(StructType(StructField(eurocents,IntegerType,false), StructField(breakfast,BooleanType,false)),true),true),true)),true),true))

相关问题