spark使用另一个arraytype列访问动态列

mfuanj7w  于 2021-07-14  发布在  Spark
关注(0)|答案(0)|浏览(192)

我在下面有一个spark数据框:

df.show()
+------+--------------------+--------------------+------+--------+------------------+
|    id|            A_amount|            B_amount|  A_pi|    B_pi|mismatchingColumns|
+------+--------------------+--------------------+------+--------+------------------+
|     1|5.000000000000000000|5.000003000000000000|   PI1|     PI1|          [amount]|
|     2|5.000000000000000000|5.000000000000000000|   PI2|     PI3|              [pi]|
|     3|1.000000000000000000|1.000001000000000000|   PI4|     PI5|      [amount, pi]|
+------+--------------------+--------------------+------+--------+------------------+

我想做的是创建一个新的列,使用中的每个列名 mismatchingColumns 动态地访问dataframe中带有“a”和“b”前缀的其他列,并将它们放入Map中。

+------------------+---------------------------------------------------------------------+
|mismatchingColumns|                                                       New Map Column|
+------------------+---------------------------------------------------------------------+
|          [amount]|               [amount -> 5.000000000000000000, 5.000003000000000000]|
|              [pi]|                                                    [pi -> PI2, PI3 ]|
|      [amount, pi]|[amount -> 1.000000000000000000, 1.000001000000000000, pi -> PI4, PI5]
+------------------+---------------------------------------------------------------------+

我考虑过使用 transformmismatchingColumns 列,但由于lambda函数的类型为 Column => Column ,而 colString => Column .
我正在运行spark版本 3.0.1 scala版本scalaversion 2.12.12 .
任何帮助都非常感谢-谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题