谁可以给我一个链接,解释如何在scalding中读取和编写简单的case类?是否有一些默认的序列化方案?
例如,我有创建com.twitter.algebird.Moments管道的作业。我希望将管道写入HDFS,并使用不同的作业读取它们。
Fer示例:我尝试使用以下命令编写代码:
pipe.write(Tsv(outputPath))并使用以下命令进行阅读:
class MomentsReadingExample (args: Args) extends Job(args){
val pipe = Tsv(args("input"), ('term, 'appearanceMoments, 'totalMoments)).read
val withSum = pipe.map(('appearanceMoments, 'totalMoments) -> 'sum) {
x: (Moments, Moments) => MomentsGroup.plus(x._1, x._2)
}
withSum.write(Tsv(args("output")))
}我收到以下错误:
java.lang.ClassCastException: java.lang.String cannot be cast to com.twitter.algebird.Moments发布于 2014-04-15 02:05:22
一种方法是使用pack and unpack。
pipe
.unpack[Moments]('appearanceMoments -> ('m0, 'm1, 'm2, 'm3, 'm4))
.write(Tsv(outputPath))
Tsv(args("input"), ('term, 'm0, 'm1, 'm2, 'm3, 'm4).read
.pack[Moments](('m0, 'm1, 'm2, 'm3, 'm4) -> 'appearanceMoments)https://stackoverflow.com/questions/22454336
复制相似问题