如何处理Spark中的制表符分隔文件?

时间:2015-08-31 01:52:38

标签: apache-spark

我有一个标签分隔的文件。第三列应该是我的密钥,整个记录应该是我的值(根据Map reduce概念)。

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 } 

我能够获得第一列的值而不是第三列的值。有谁能建议我如何才能做到这一点?

1 个答案:

答案 0 :(得分:2)

在您完成了对{rdd}的分割x.split("\\t")之后(在您的示例中,您调用了joinedRDD,但我打算将其称为parsedRDD,因为我们没有&# 39;用任何东西加入它)将成为阵列的RDD。我们可以通过执行parsedRDD.map(r => (r(2), r))将其转换为键/值元组数组。话虽这么说 - 你并不仅仅局限于map&减少Spark中的操作,以便其他数据结构可能更适合。另外,对于制表符分隔的文件,如果最适合您要解决的最终问题,可以使用spark-csv和Spark DataFrames。