2015-08-31 2 views
1

У меня есть файл, который разделен на вкладку. Третий столбец должен быть моим ключом, и вся запись должна быть моей ценностью (согласно концепции сокращения карты).Как обрабатывать разделенные табулятурой файлы в Spark?

val cefFile = sc.textFile("C:\\text1.txt") 
val cefDim1 = cefFile.filter { line => line.startsWith("1") } 
val joinedRDD = cefFile.map(x => x.split("\\t")) 
joinedRDD.first().foreach { println } 

Я могу получить значение первого столбца, но не третьего. Может ли кто-нибудь предложить мне, как я мог бы это сделать?

ответ

2

После того, как вы сделали раскол x.split("\\t") ваш RDD (что в вашем примере вы под названием joinedRDD, но я буду называть его parsedRDD, так как мы не присоединились к нему с чем-либо еще) собирается быть РДД массивов , Мы могли бы превратить это в массив ключей/значений, выполнив parsedRDD.map(r => (r(2), r)). Это говорит о том, что вы не ограничиваетесь только картой &, сокращаете операции в Spark, поэтому возможно, что другая структура данных может быть лучше подходит. Также для разделенных разделов файлов вы можете использовать spark-csv вместе с Spark DataFrames, если это хорошо подходит для возможной проблемы, которую вы хотите решить.

+0

Я знаю, что мы можем использовать dataframes. Но у меня нет чего-то основного в искры. Итак, я пытаюсь создать сильный фундамент. Спасибо за ваш ответ. Он решил мою проблему – Satya