如何使用索引和文本对连接索引集

时间:2016-09-23 18:50:50

标签: apache-spark

My Spark Job从文本文件中读取行,然后使用zipWithIndex为每行添加唯一索引:

JavaPairRDD<Long, String> docsWithIndexes = sc
            .textFile("test.txt")
            .zipWithIndex()
            .mapToPair(t -> new Tuple2<Long, String>(t._2, t._1));

docsWithIndexes包含其中key是索引(由zipWithIndex生成)的对,以及来自文件的文本行的值。 在这个工作的后期阶段,我会向驱动程序收集一组索引List<Set<Long>> setsOfDocs。这些集合中的索引与docsWithIndexes中的索引相同。我想要实现的是用setsOfDocs中的文本行替换docsWithIndexes中每个集合中的索引号,从而有效地将每个索引与其对应的文本行匹配。 我认为必须涉及join,但我不知道如何在每个集合中进行匹配。我需要保持这些设置而不是将它们弄平,因为最终我需要将每个集合分别写入输出文件作为单独的行。 当然,在驱动程序中,我可以docsWithIndexes.collectAsMap()并使用它来匹配setsOfDocs中可以解决我的问题的索引,但是在内存消耗方面这将是残酷的。我想要的是在我的集群节点上执行文本匹配的索引,并将结果写入HDFS。

0 个答案:

没有答案