1

我想将一些 JavaRDD 集合的不同存储到 Spark 中的文件中?

通过使用 RDD 的 distinct() 方法,我无法达到同样的效果。

我的猜测是 RDD 将每个元素视为一个单独的实例。在这种情况下,我们如何才能实现与众不同。

以下是代码片段,有人可以帮忙吗?

public static void main(String[] args) {
    SparkConf conf = new SparkConf().setAppName("Xml Spark Demo");
    JavaSparkContext sc = new JavaSparkContext(conf);

    JavaSQLContext sqlContext = new org.apache.spark.sql.api.java.JavaSQLContext(
            sc);


    // Load a text file and convert each line to a JavaBean.
    JavaRDD<String> dataFromFile = sc.textFile(
            "/home/kedarnath/Rentals/inputData/temp-01.xml").map(
            new ParseAgentFromXml());

    //Need distinct values here
    dataFromFile.distinct().saveAsTextFile("/home/kedarnath/Rentals/testOutputDistinct.txt");

}

提前致谢,

~基达

4

1 回答 1

3

从性能的角度来看,我不确定这是否是最有效的方法,但我会尝试将过程分为两个不同的步骤:定义和映射到配对。考虑以下示例:

Original dataset:          Desired output (distinct elements)

Apple                      1, Apple
Tree                       2, Tree
Car                        3, Car
Priest                     4, Priest
Apple                      5, Phone
Tree
Apple
Phone
  • 清楚的:

通过使用distinct()转换,您将获得一个包含所有不同元素的新 RDD 数据集。在这种情况下,它将返回如下内容:

Apple
Tree
Car
Priest
Phone
  • 映射到配对:

下一步是将键关联到 RDD 数据集中的每个值,将其转换为键值格式。为此,mapToPair()可以使用转换。输出将产生所需的输出。

1, Apple
2, Tree
3, Car
4, Priest
5, Phone

访问页面以获取有关不同可用方法的更多信息。

于 2014-10-09T09:55:01.833 回答