У меня есть фрейм данных df1 формата
+------+------+------+
| Col1 | Col2 | Col3 |
+------+------+------+
| A | z | m |
| B | w | n |
| C | x | o |
| A | z | n |
| A | p | o |
+------+------+------+
и другой фрейм данных df2 формата
+------+------+
| Col1 | Col2 |
+------+------+
| 0-A | 0-z |
| 1-B | 3-w |
| 2-C | 1-x |
| | 2-P |
+------+------+-
Я пытаюсь заменить значения в Col1 и Col2 из df1 на значения из df2 с использованием Spark Java.
Конечный кадр данных df3 должен выглядеть следующим образом.
+------+------+------+
| Col1 | Col2 | Col3 |
+------+------+------+
| 0-A | 0-z | m |
| 1-B | 3-w | n |
| 2-C | 1-x | o |
| 0-A | 0-z | n |
| 0-A | 2-p | o |
+------+------+------+
Я пытаюсь заменить все значения в column1 и column2 в df1 значениями из col1 и col2 из df2. В любом случае, я могу добиться этого в синтаксисе данных Spark Java.?
Первоначальная идея, которая у меня возникла, заключалась в следующем:
String pattern1="\\p{L}+(?: \\p{L}+)*$";
df1=df1.join(df2, df1.col("col1").equalTo(regexp_extract(df2.col("col1"),pattern1,1)),"left-semi");