Сравнение каждой строки в 2 фреймах данных с использованием Spark и сохранение результата в новом столбце - PullRequest
0 голосов
/ 14 февраля 2020

Пожалуйста, мне нужна помощь при сравнении 2-х фреймов данных с желаемым выводом, как показано на последнем изображении ниже. У меня есть 2 фрейма данных с идентификатором столбца в качестве соединительного ключа. Теперь я хочу сравнить столбцы N_1 с N_2, так же, как N_3 с N_4 и N_5 с N_6. Тогда результат каждого сравнения будет в отдельном столбце с указанием «Y», если сравниваемые столбцы совпадают, и «N», если они не совпадают. В конечном счете, я хочу создать последний столбец, в котором если для любого сравниваемого столбца в каждой строке указано «Y», то для сопоставления будет «Y». Пожалуйста, смотрите последнее изображение для моего желаемого выхода. Я не могу прийти с кодом scala, чтобы сделать это. Я использую Spark. Пожалуйста, помогите

enter image description here

enter image description here

enter image description here

1 Ответ

1 голос
/ 14 февраля 2020

Повторите вызов withColumn, чтобы создать столбцы N_1=N_2N_3=N_4N_5=N_6MATCHING

df1.join(df2, df1.col("ID") === df2.col("ID"))
   .withColumn("N_1=N_2", when(df1.col("N_1") === df1.col("N_2"), lit("Y")).otherwise(lit("N")))
   .withColumn("N_3=N_4", when(df1.col("N_3") === df2.col("N_4"), lit("Y")).otherwise(lit("N")))
   .withColumn("N_5=N_6", when(df2.col("N_5") === df2.col("N_6"), lit("Y")).otherwise(lit("N")))
   .withColumn("MATCHING", when(col("N_1=N_2") === "Y" || col("N_3=N_4") === "Y" || col("N_5=N_6") === "Y", lit("Y")).otherwise(lit("N")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...