gpt4 book ai didi

scala - 具有特征的 Spark 2.0 数据集编码器

转载 作者:行者123 更新时间:2023-12-04 13:56:26 24 4
gpt4 key购买 nike

我正在构建一个数据集,其中每个记录都映射到一个案例类(例如具有原始类型的 CustomDataEntry)。

val dataset = spark.read (...) .as[CustomDataEntry]

到现在为止还挺好

现在我正在编写一个带有 CustomDataEntry 的数据集的转换器,进行一些计算并添加一些新列,例如。找到经纬度并计算geohash

我的 CustomDataEntry 现在有一个属性/列(geohash),它是 不是 存在于案例类中,但存在于数据集中。这再次工作正常,但似乎不好而不是 type safe (如果编码器甚至可以做到这一点)。

我可以将它添加为案例类中的 Option 字段,但这看起来很困惑,而不是可组合的。更好的方法似乎是我应该在 CustomDataEntry 上混合一些特征

例如
trait Geo{
val geohash:String
}

然后将数据集返回为
dataset.as[CustomDataEntry with Geo]

这行不通

Error:(21, 10) Unable to find encoder for type stored in a Dataset. Primitive types (Int, String, etc) and Product types (case classes) are supported by importing spark.implicits._ Support for serializing other types will be added in future releases. .as[CustomDataEntry with Geo]



答案似乎很明显(不支持, future 版本),但也许我忽略了一些东西?

最佳答案

恕我直言,编码器尚不存在,但您可以使用 Encoders.kryo[CustomDataEntry with Geo]作为编码器的解决方法。

关于scala - 具有特征的 Spark 2.0 数据集编码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40017603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com