Похоже, что RDD.take()
просто повторяет последний элемент, прочитанный при поддержке SequenceFile.
Например:Spark RDD take() с файлом последовательности
val rdd = sc.sequenceFile("records.seq", classOf[LongWritable], classOf[RecordWritable])
val records: Array[(LongWritable, RecordWritable)] = rdd.take(5)
System.out.println(records.map(_._2.toString).mkString("\n"))
Выходы:
Record(3.1, 2.5)
Record(3.1, 2.5)
Record(3.1, 2.5)
Record(3.1, 2.5)
Record(3.1, 2.5)
Даже если я знаю, что строки являются уникальными.
Эта проблема также существует для sc.binaryRecords()
.
Я понимаю, что это, вероятно, связано с проблемой кэширования Hadoop Writable, но есть ли планы исправить это? Есть ли какие-нибудь работы?
Спасибо за ответ. Вот пункт джиры в Спарке. https://issues.apache.org/jira/browse/SPARK-1018 Похоже, это также влияет на collect(): – shj