2016-05-20 1 views
1

ДляPartition РДД из текстового файла при сохранении заголовка

val rdd = sc.textFile("file.txt") 

где file.txt включает

Some Informative Header 
value1, value11 
value2, value22 

как разделить rdd в

Some Informative Header 
value1, value11 

и

Some Informative Header 
value2, value22 

, чтобы я мог запускать rdd.pipe("/bin/awesomeApp") на каждом разделе?

Примечание В конце концов мои awesomeApp потребности как самого первого въезда в Some Informative Header, остальные записи могут быть вычислены параллельно.

+0

Возможный дубликат [Как пропустить заголовок из CSV-файлов в Спарк ?] (http://stackoverflow.com/questions/27854919/how-to-skip-header-from-csv-files-in-spark) (Хотя в этом вопросе явно не задается вопрос о сохранении заголовка, некоторые из ответ на этот вопрос) – DNA

+0

Если я могу спросить @DNA, какой? По крайней мере, предоставить OP прямую ссылку на этот ответ. – eliasah

+0

@eliasah Sure - [этот ответ] (http://stackoverflow.com/a/31202898/699224) показывает способ сохранения заголовка – DNA

ответ

0

То, как вы хотите, точно требует реализации пользовательских RDD и разделов, что не является самой простой задачей. Таким образом, если вы проворны в выборе формата вывода, вы можете преобразовать входной RDD в ключ-значение одной, где ключ каждой строки заголовка:

val rdd = sc.textFile("file.txt") 
val header = rdd.take(1) 
val lines = rdd.drop(1) 
val headerRdd = sc.parralelize(0 to lines.count()) 
headerRdd.zip(lines) 
Смежные вопросы