我想要一个打开sequenceFile的函数,并提供包含K / V对的文件的路径。我在想这样的事情:
def sequenceFileWithPath[K, V](
input: String,
minPartitions: Int
)(implicit
sc: SparkContext,
km: ClassTag[K],
vm: ClassTag[V],
kcf: () => WritableConverter[K],
vcf: () => WritableConverter[V]
): RDD[(Path, K, V)] = {
val rdd = sc.sequenceFile[K, V](input).asInstanceOf[HadoopRDD[K, V]]
rdd mapPartitionsWithInputSplit {
case (inputSplit, t) =>
val path = inputSplit.asInstanceOf[FileSplit].getPath
t map { case (k, v) => (path, k, v) }
}
}
```
但是,WritableConverter
是私有的,使编译失败。问题:
WritableConverter
是私密的?我觉得扩展sequenceFile[K,V]
的功能更加困难。此外,重用可用的转换器也很有用。Writable
的实例进行函数调用,例如sequenceFileWithPath[String, Int]
?