烫伤中的读写案例类

dgiusagp  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(341)

有人能给我指出一个链接,解释如何在烫伤中读写简单的案例类吗?是否有一些默认的序列化方案?
例如,我的工作是创建com.twitter.algebird.moments的管道。我希望将管道写入hdfs,并使用不同的作业读取它们。
例如:我试着用:

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
lrl1mhuk

lrl1mhuk1#

一种方法是使用打包和解包。

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)

相关问题