scala - Scala:创建基于地图的 UDF
问题描述
数据框 df10 的架构
root
|-- ID: string (nullable = true)
|-- KEY: array (nullable = true)
| |-- element: string (containsNull = true)
代码
val gid1 = 505
val array1: Array[String] = Array("atm_P3", "fee_P6", "c_P8", "card_P4", "iss_P5", "vat_P7")
//simplistic udf
val isSubsetArrayUDF = udf { a : Seq[String] => if (!{for (elem <- a) yield array1.contains(elem)}.contains(false) == true) gid1 else 0}
val df11 = df10.withColumn("is_subset_KEY", isSubsetArrayUDF(col("tran_particular")))
我需要使用给定的地图为 df10 中的每个“KEY”分配一个“GID”
Map(KEY -> WrappedArray(atm_P3, fee_P6, c_P8, card_P4, iss_P5, vat_P7, cif_P1, cif_P2), GID -> 505)
Map(KEY -> WrappedArray(atm_P3, fee_P6, c_P8, card_P4, iss_P5, vat_P7, cif_P2), GID -> 423)
...
如何使用udf来实现?
解决方案
推荐阅读
- unity3d - 如果敌人靠近玩家,则停止向上倾斜。Unity3D
- ios - 使用偏移和不透明度时出现跳跃的性能问题
- android - 相同的布局,但向右移动了一点
- r - 复杂热图缩放注释:集群明智箱线图
- c++ - Big Sur 内置的 CMake MacOS 应用程序无法在 Catalina 上运行
- rust - 如何用单个值初始化一个大数组?
- google-apps-script - 有没有办法在谷歌电子表格/脚本中插入多个输入(相同或不同的单元格)?
- scrape - 从另一个站点下载数据
- java - 如何将对象从适配器发送到活动
- javascript - 单击 ReactJs 中的复选框时出现未定义的错误