Wenn der erste Datensatz nur eine Kopfzeile enthalten würde, wäre der effizienteste Weg, diese herauszufiltern:
rdd.mapPartitionsWithIndex {
(idx, iter) => if (idx == 0) iter.drop(1) else iter
}
Dies hilft nicht, wenn natürlich viele Dateien mit vielen Kopfzeilen enthalten sind. Sie können drei RDDs, die Sie auf diese Weise erstellen, zusammenschließen.
Sie können auch einfach filter
eine Zeile schreiben , die nur einer Zeile entspricht, die eine Überschrift sein kann. Dies ist recht einfach, aber weniger effizient.
Python-Äquivalent:
from itertools import islice
rdd.mapPartitionsWithIndex(
lambda idx, it: islice(it, 1, None) if idx == 0 else it
)
zipWithIndex
in der anderen Antwort vorgeschlagene Ansatz.