scala - 使用另一个 ArrayType 列的 Spark 动态列访问
问题描述
我在下面有一个 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
动态使用每个列名,并使用“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]
+------------------+---------------------------------------------------------------------+
我考虑transform
在mismatchingColumns
列上使用 a ,但这不起作用,因为 lambda 函数的类型是Column => Column
,而 的类型col
是
String => Column
。
我正在运行3.0.1
带有 scala 版本 scalaVersion的 spark 版本2.12.12
。
非常感谢任何帮助 - 谢谢。
解决方案
推荐阅读
- ionic-framework - 错误:Node Sass 尚不支持您当前的环境:Windows 64-bit with Unsupported runtime (67)
- powershell - 写入主机的数组成员名称
- c# - 没有其他功能与控制台应用程序中运行的计时器一起使用
- python - Python中的未知对象和布尔运算
- php - PHP - 函数反射 - 在不运行函数的情况下获取所有返回值
- c# - 指数符号的 Asp 验证
- c# - EntityFramework 与 Sql Server 数据库同步上下文
- android - 在运行时查找未翻译的资源
- r - 从文本中删除所有标点符号,包括 tm 包的撇号
- scala - 远程连接AKKA中的两台机器,连接被拒绝