我想比较两个RDD中的数据。如何迭代和比较一个RDD中的字段数据与另一个RDD中的字段数据。以下Eg文件:`
File1
f1 f2 f3 f4 f5 f6 f7
1 Nancyxyz 23456 12:30 NEWYORK 9000 xyz
2 ranboxys 12345 12:30 NEWYORK 9000 xyz
File2
f1 f2 f3 f4 f5 f6 f7
2 ranboxys 12345 12:30 NEWYORK 9000 xyz
1 markalan 23456 12:30 LONDON 7000 xyz
3 Loyleeie 45678 12:40 London 9001 abc
在上面,具有前2个记录的两个文件相同但顺序顺序不同。 现在我想比较rdds和print只有不同的记录,即
File2
3 Loyleeie 45678 12:40 London 9001 abc
我不想在两个rdds中获得前2条记录,因为两者都相同,但顺序不同 你能解释一下如何在scala中使用rdds
我尝试了减法和while循环等somany选项。但没有运气
我刚刚更改了“file2”第二条记录现在我要在file2和修改后的字段中打印第二条记录和第三条记录。我不知道哪个字段被更改,它只是比较file1如果不匹配则打印不同的记录并在另一行打印哪些字段被更改
答案 0 :(得分:3)
假设File1
和File2
类型为RDD[String]
,则以下操作将包含File2
但不包含File1
scala> val File1 = spark.sparkContext.textFile("File1.txt")
scala> val File2 = spark.sparkContext.textFile("File2.txt")
scala> File2.subtract(File1).collect
res0: Array[String] = Array(" 3 Loyleeie 45678 12:40 London 9001 abc")
此处name是字符串中的第二个字段(最初修剪空格)
scala> File2.subtract(File1).map { x => x.split(" ")(2) }.collect
res1: Array[String] = Array(Loyleeie)
如果tab是你的分隔符,请相应地替换它