Можно ли оценить ключ только при чтении SequenceFile в Spark? - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь прочитать файл последовательности с пользовательскими записываемыми подклассами для обоих K и V входного файла последовательности в задание на искру.

Подавляющее большинство строк должно быть отфильтровано путем сопоставления с широковещательной переменной (андидат) и Kclass.getId.К сожалению, значения V десериализованы для каждой записи независимо от стандартного подхода, и в соответствии с профилем, на котором тратится большая часть времени.

- вот мой код.обратите внимание на мою самую последнюю попытку прочитать здесь как «Доступно для записи» в общем, а затем откатить назад, которая работала функционально, но все же вызывала полную десериализацию в итераторе.

val rdd = sc.sequenceFile(
      path,
      classOf[MyKeyClassWritable],
      classOf[Writable]
    ).filter(a => candidateSet.value.contains(a._1.getId))```

1 Ответ

1 голос
/ 21 мая 2019

Оказывается, в Твиттере есть библиотека, которая хорошо справляется с этим делом. В частности, использование этого класса позволяет оценивать сериализованные поля на более позднем этапе, читая их как DataInputBuffers

https://github.com/twitter/elephant-bird/blob/master/core/src/main/java/com/twitter/elephantbird/mapreduce/input/RawSequenceFileRecordReader.java

...