如何在dataframescala中对map列类型执行agg函数

lokaqttq  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(381)
col1    |     col2      |       col3    |          col4         |        col5    | col6|     col7          |
+-------+---------------+---------------+-----------------------+----------------+-----+-------------------+
|   1247|            PRM|        2010101|                   1254|         GUARNTR|    1|   [PRM -> 2010101]|
|   1246|            PRM|           null|                   1234|         GUARNTR|    3|           [PRM ->]|
|   1235|            PRM|               |                   1239|         CO_BORR|    1|          [PRM -> ]|
|   1249|            SEC|       20101010|                   1234|         GUARNTR|    1|  [SEC -> 20101010]|
|   1234|            PRM|           null|                   1234|            BORR|    1|      [PRM -> null]|
|   1248|            SEC|       20101010|                   1234|             chk|    1|  [SEC -> 20101010]|

我有一个Dataframe,col7是map数据类型列。我想根据一个键值对这列进行求和。例如,我想要列7(“prm”)和键prm之和。

pdtvr36n

pdtvr36n1#

我希望这有助于:

df.withColumn("prmSum",sum("col7.PRM").over(Window.partitionBy("col2"))).show

+----+----+-------+----+-------+----+----------------+-------+
|col1|col2|   col3|col4|   col5|col6|            col7| prmSum|
+----+----+-------+----+-------+----+----------------+-------+
|1249| SEC|2010101|1234|GUARNTR|   1|[SEC -> 2010101]|   null|
|1248| SEC|2010101|1234|    chk|   1|[SEC -> 2010101]|   null|
|1247| PRM|2010101|1254|GUARNTR|   1|[PRM -> 2010101]|2010101|
|1246| PRM|      0|1234|GUARNTR|   3|      [PRM -> 0]|2010101|
|1235| PRM|      0|1239|CO_BORR|   1|      [PRM -> 0]|2010101|
|1234| PRM|      0|1234|   BORR|   1|      [PRM -> 0]|2010101|
+----+----+-------+----+-------+----+----------------+-------+

相关问题