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 filtereine 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
)
zipWithIndexin der anderen Antwort vorgeschlagene Ansatz.