在 SequenceFile 的支持下,它看起来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 缓存问题有关,但是是否有解决此问题的计划?有什么变通办法吗?