Почему WritableConverter закрытый? - PullRequest
0 голосов
/ 12 мая 2018

Я хотел бы иметь функцию, которая открывает файл 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]?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...