[英]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.