从文本文件中分区rdd,同时保留标题

时间:2016-05-20 12:22:13

标签: scala apache-spark pipe rdd

有关

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的第一个条目,其余条目可以并行计算。

1 个答案:

答案 0 :(得分:0)

您希望它的方式完全需要实现自定义RDD和分区,这不是最简单的任务。因此,如果您灵活选择输出格式,则可以将输入RDD转换为键值1,其中每行的键是标题:

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)