【发布时间】:2020-02-14 02:22:10
【问题描述】:
我有一个格式为 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 |
+------+------+-
我正在尝试使用 Spark Java 将 df1 的 Col1 和 Col2 中的值替换为 df2 中的值。
结束数据帧 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 |
+------+------+------+
我正在尝试将 df1 的 column1 和 column2 中的所有值替换为 df2 的 col1 和 col2 中的值。 无论如何,我可以在 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");
【问题讨论】:
-
您是否有具有相同数据格式的实际数据,例如 0-A 和 A,是否可以检查 df1.col1 是否在 df2.col1 中?或 df1.col1 可以有任何值
-
数据和我上面指定的格式一样。我只需要用df2中的值替换df1中的值。
标签: java apache-spark apache-spark-sql