如何解决如何为带有几种类型的对象的数组的Spark模式构建正确的StructType?
我所拥有的结构:
{
"person":"Jhon",[
{"model":"golf","mark":"vw","fuel":"d","year":2000},{"model":"yamaha r1","year":1998,"abs":true}
]
}
//
StructType(
StructField("person",StringPrimitive,false),ArrayType( /* ???? */ ) // Should be possible to define several structures
)
所以,这个想法很简单。某人拥有自己的交通工具阵列,并且该交通工具的类型可以是:CarEntity,MotorcycleEntity,BicycleEntity,AirplaneEntity等...
第二种情况,我每个人只收到一个运输实体。像这样:
{"person":"Jhon","abs":true}}
//
StructType(
StructField("person",StructField( /* ???? */ ) // Should be possible to define several structures
)
在这种情况下,传输可以是前面提到的类型之一。
为此构建StructType的正确方法是什么?
如何定义多种或多种ArrayType
类型的StructType
?
解决方法
如果您使用的是Spark 1.x,则可以尝试使用UDT实现相同的结果(如本topic中所述)。但是对于Spark 2.x,此功能已删除。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。