【问题标题】:How do I change how keys are serialized in Scalding?如何更改 Scalding 中键的序列化方式?
【发布时间】:2016-04-10 19:17:21
【问题描述】:

我在烫伤工作中按自定义类型分组:

typedPipe
   .map(someMapper)
   .groupBy(_.nonPrimitiveField)
   .sum
   .write(sink)

在我的输出中,键显示为toString 输出,这没有用。我怎样才能让烫伤对这些键使用自定义序列化程序?

我目前的解决方法是调用toTypedPipe 并在映射器中显式调用我的序列化函数,但这似乎很浪费。

接收器是TypedTsv[(Key, Value)],其中Key 是我希望以不同方式序列化的字段类型。

【问题讨论】:

  • 这取决于您正在写入的接收器的类型。如何创建水槽?
  • @Dima 更新问题。

标签: scala scalding


【解决方案1】:

嗯,Tsv 是一种文本格式,所以,到最后,一切都变成了字符串。 最简单的方法是在 Key 类型上覆盖 .toString,或者将其包装到另一个对象中并覆盖 .toString。或者,只需将其替换为 String 作为最后一步(我认为,这就是您已经在做的事情)。当您说“浪费”时,我不确定您的意思。如果这是您关心的问题,它不会向流程添加额外的步骤,并且在任何情况下都必须转换为字符串,因此成本是固定的。

typedPipe.
 .map(someMapper)
 .groupBy(x => beautifulString(x.nonPrimitiveField))
 .sum
 .write(sink)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 2023-03-05
    • 1970-01-01
    相关资源
    最近更新 更多