Tom*_*ous 5 scala dataset apache-spark
我正在构建一个数据集,其中每个记录都映射到一个案例类(例如带有原始类型的CustomDataEntry)。
val dataset = spark.read (...) .as[CustomDataEntry]
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好
现在我正在编写一个带有CustomDataEntry 的数据集的转换器,进行一些计算并添加一些新列,例如。找到经纬度并计算geohash
我的CustomDataEntry现在有一个属性/列(geohash),它不存在于案例类中,但存在于数据集中。这再次工作正常,但似乎不太好type safe(如果编码器甚至可以这样做)。
我可以将它添加为案例类中的 Option 字段,但这看起来很混乱,而不是可组合的。更好的方法似乎是我应该在CustomDataEntry上混合一些特征
例如
trait Geo{
val geohash:String
}
Run Code Online (Sandbox Code Playgroud)
然后将数据集返回为
dataset.as[CustomDataEntry with Geo]
Run Code Online (Sandbox Code Playgroud)
这行不通
错误:(21, 10) 无法找到存储在数据集中的类型的编码器。导入 spark.implicits 支持原始类型(Int、String 等)和产品类型(case 类)。未来版本中将添加对序列化其他类型的支持。.as[带地理信息的自定义数据条目]
答案似乎很明显(不支持,未来版本),但也许我忽略了一些东西?
| 归档时间: |
|
| 查看次数: |
1454 次 |
| 最近记录: |