sc.textFile (ścieżka) umożliwia odczytanie pliku HDFS, ale nie przyjmuje parametrów (np. Pomiń liczbę wierszy, has_headers, ...).Filtr RDD oparty na numerze wiersza
w "Spark" Nauka O'Reilly e-książki, jest zalecane, aby użyć następujących funkcji odczytać CSV (Przykład 5-12. Python przykład CSV obciążenia)
import csv
import StringIO
def loadRecord(line):
"""Parse a CSV line"""
input = StringIO.StringIO(line)
reader = csv.DictReader(input, fieldnames=["name", "favouriteAnimal"])
return reader.next()
input = sc.textFile(inputFile).map(loadRecord)
Moje pytanie dotyczy jak być selektywny o wierszach „pobranych”:
- Jak uniknąć ładowania pierwszego wiersza (nagłówki)
- Jak usunąć konkretny wiersz (na przykład, wiersz 5)
Widzę tu kilka przyzwoitych rozwiązań: select range of elements, ale chciałbym zobaczyć, czy jest coś prostszego.
Thx!
Dzięki Elyase. Z moją edycją twój kod robi lewę dla nagłówków! –
Możesz użyć 'RDD.zipWithIndex()', aby dodać numery wierszy, a następnie możesz również filtrować według tego. (Zauważ, że 'zipWithIndex' nie jest tani.) –