Я использую spark-shell для сравнения 2 CSV-файлов.Каждый файл имеет одинаковое количество столбцов и все 600 000 строк.Я ожидаю, что 2 файла имеют одинаковые строки.Вот мой сценарий.
val a =
spark
.read
.option("header", "true")
.option("delimiter", "|")
.csv("/tmp/1.csv")
.drop("unwanted_column").
.cache()
val b =
spark
.read
.option("header", "true")
.option("delimiter", "|")
.csv("/tmp/2.csv")
.drop("unwanted_column")
.cache()
val c = a.join(b, Seq("id", "year"), "left_outer").cache()
c.count() // this is returning 600,000
Теперь я пытаюсь выяснить разницу путем случайного выбора строки с одинаковым идентификатором и годом в двух наборах данных a и b.
val a1 = a.filter(i => i.get(0).equals("1") && i.get(1).equals("2016")).first()
val b1 = b.filter(i => i.get(0).equals("1") && i.get(1).equals("2016")).first()
Затем я пытаюсь сравнить каждый столбец в a1 и b1.
(0 to (a1.length -1)).foreach { i =>
if (a1.getString(i) != null && !a1.getString(i).equals(b1.getString(i))) {
System.out.println(i + " = " + a1.getString(i) + " = " + b1.getString(i))
}
}
Он ничего не печатал.Другими словами, нет никакой разницы.
Я не могу сказать, почему c.count () возвращает 600 000 таким образом.