我有一个标签分隔的文件。第三列应该是我的密钥,整个记录应该是我的值(根据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 }
我能够获得第一列的值而不是第三列的值。有谁能建议我如何才能做到这一点?
答案 0 :(得分:2)
在您完成了对{rdd}的分割x.split("\\t")
之后(在您的示例中,您调用了joinedRDD
,但我打算将其称为parsedRDD
,因为我们没有&# 39;用任何东西加入它)将成为阵列的RDD。我们可以通过执行parsedRDD.map(r => (r(2), r))
将其转换为键/值元组数组。话虽这么说 - 你并不仅仅局限于map&减少Spark中的操作,以便其他数据结构可能更适合。另外,对于制表符分隔的文件,如果最适合您要解决的最终问题,可以使用spark-csv和Spark DataFrames。