为什么WritableConverter是私有的?

时间:2018-05-11 22:31:03

标签: scala apache-spark

我想要一个打开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是私有的,使编译失败。问题:

  1. 为什么WritableConverter是私密的?我觉得扩展sequenceFile[K,V]的功能更加困难。此外,重用可用的转换器也很有用。
  2. 如何解决此问题仍然可以使用Scala类型而不是Writable的实例进行函数调用,例如sequenceFileWithPath[String, Int]

0 个答案:

没有答案