如何从文本文件中查找和过滤唯一值。
我尝试如下,它不起作用。
val spark = SparkSession.builder().master("local").appName("distinct").getOrCreate()
var data = spark.sparkContext.textFile("text/file/opath")
val uniqueval = data.map { rec => (rec.split(",")(3).distinct) }
var fils = data.filter(line => line.split(",")(3).equals(uniqueval)).map(x => (x)).foreach { println }
示例数据:
ID | Name
1 john
1 john
2 david
3 peter
4 steve
必需输出:
1 john
2 david
3 peter
4 steve
答案 0 :(得分:1)
核心scala是否被允许?
scala> val text = List ("single" , "double", "mono", "double")
text: List[String] = List(single, double, mono, double)
scala> val u = text.distinct
u: List[String] = List(single, double, mono)
scala> val d = text.diff(u)
d: List[String] = List(double)
scala> val s = u.diff (d)
s: List[String] = List(single, mono)
答案 1 :(得分:1)
你几乎是对的。必须在RDD上调用.distinct()
。
我将语句3替换为:
val uniqueval = data.distinct().map...
这假设类似的记录在文本文件中具有相同的行。
答案 2 :(得分:1)
您的代码可以是:
sparkContext.textFile("sample-data.txt").distinct()
.saveAsTextFile("sample-data-dist.txt");
distinct方法可以执行您想要的操作。