如何从一个特质为spark创建一个模式?考虑到一个特点:
trait A{
val name:String
val size:String
}
作为:
Encoders.product[A].schema
给予:
Error:type arguments do not conform to method product's type parameter bounds [T <: Product]
此外,字段的数量将超过case类参数>200的限制
如何从一个特质为spark创建一个模式?考虑到一个特点:
trait A{
val name:String
val size:String
}
作为:
Encoders.product[A].schema
给予:
Error:type arguments do not conform to method product's type parameter bounds [T <: Product]
此外,字段的数量将超过case类参数>200的限制
2条答案
按热度按时间x33g5p2x1#
我不能给你所有的细节,为什么这是不工作,但我提出了一个稍微替代的解决方案,我们经常使用在我们的scalaSpark项目。
签字人
Encoders.product
看起来像这意味着tt需要一个
Product
trait和一个隐式的typetag。你可以创造一个
case class
随着case类的扩展Product
(和Serializable
)自动地。为了获得模式,您可以执行以下操作:
正如一开始所说,我不能解释所有的细节,只是提供一个有效的解决方案,并希望它符合您的需要。
relj7zay2#
case类不支持超过22列,请尝试在所有其他类/对象之外创建。如果您需要创建一个包含大量字段的dataframe模式,这应该是可行的。