java - Hadoop Spark : How to make distinct of elements in JavaRDD?

标签 java apache-spark rdd

我想将一些 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");

}

提前致谢

~凯达

最佳答案

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

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

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

关于java - Hadoop Spark : How to make distinct of elements in JavaRDD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26251423/

相关文章:

python - 如何使用 Spark 和 Caffe 对图像进行分类

java - 在 Android 中存储/保存下载图像的最佳方式哪种方式更适合离线模式和同步?

java - “找不到符号”或“无法解析符号”错误是什么意思?

apache-spark - Kubernetes 上 Spark 应用程序的 Numpy 和其他库依赖项

scala - 在 'spark.sql.hive.metastore.jars' 中设置属性 'spark-defaults.conf' 后出现异常

scala - toArray 的值不是 org.apache.spark.rdd.RDD[(String, Int)] 的成员

java - 如何在服务器上运行java程序?

java - 我可以使用什么替换方法来替换字符串中的子字符串?

python - 如何从pyspark中的数组中提取元素

java - 如何根据给定分区过滤 RDD?