【发布时间】:2021-01-07 10:29:58
【问题描述】:
rdd = sc.parallelize( [(['a','b','c'], 'c'), \
(['h','j','s'], 'j'), \
(['w','x','a'], 'a'), \
(['o','b','e'], 'c')] )
df = spark.createDataFrame(rdd, ['seq','target'])
+---------+------+
| seq|target|
+---------+------+
|[a, b, c]| c|
|[h, j, s]| j|
|[w, x, a]| a|
|[o, b, e]| c|
+---------+------+
我想写一个 UDF 来从 seq 中删除目标。
+---------+------+---------+
| seq|target| filtered|
+---------+------+---------+
|[a, b, c]| c| [a, b]|
|[h, j, s]| j| [h, s]|
|[w, x, a]| a| [w, x]|
|[o, b, e]| c|[o, b, e]|
+---------+------+---------+
请注意,这只是一个展示。实际情况更为复杂。我想通过使用另一列(例如target)作为参数来获得处理一列(例如seq)的正式方式。
有没有通用的解决方案?
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql user-defined-functions