首页 > 解决方案 > 如何使用 Spark hadoopFile 方法使用值类型 Text 的自定义输入格式?

问题描述

如何使用 Spark hadoopFile 方法使用值类型 Text 的自定义输入格式?例如OmnitureDataFileInputFormat用于处理 Omniture Click Stream 数据?

标签: scalaapache-sparkhadoop

解决方案


import org.rassee.omniture.hadoop.mapred.OmnitureDataFileInputFormat
import java.nio.charset.StandardCharsets
import org.apache.hadoop.io.{LongWritable, Text}
import org.apache.hadoop.mapred.InputFormat

val rddLines: RDD[String] =
  sparkSession.sparkContext.hadoopFile(
    path = path,
    inputFormatClass = classOf[OmnitureDataFileInputFormat],
    keyClass = classOf[LongWritable],
    valueClass = classOf[Text]
  )
  .map(_._2.copyBytes()).map(new String(_, StandardCharsets.UTF_8))

推荐阅读