我想将一些 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/