[英]How to compare two rdds using scala+spark.? There is no key in both the rdds?
我想比较两个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
在上面,具有第1 2条记录的两个文件都相同,但顺序不同。 现在我想比较rdds和只打印不同的记录,即
File2
3 Loyleeie 45678 12:40 London 9001 abc
我不想在两个rdds中都获得前2个记录,因为两者相同,但是顺序不同。请您解释一下如何在scala中使用rdds来做到这一点。
我尝试了许多选项,例如减法和while循环。 但没有运气
我刚刚在“ file2”第二记录中更改了,现在我想在file2和修改后的字段中打印第二记录和第三记录。 我不知道哪个字段被更改,它只是比较file1如果不匹配,则打印不同的记录并在另一行中打印哪些字段已更改
假设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是您的分隔符,请相应地替换它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.