【发布时间】:2019-07-18 10:28:41
【问题描述】:
使用 Pyspark 2.2
我有一个包含多列的 spark DataFrame。我需要向 UDF 输入 2 列并返回第 3 列
输入:
+-----+------+
|col_A| col_B|
+-----+------+
| abc|abcdef|
| abc| a|
+-----+------+
col_A 和 col_B 都是 StringType()
期望的输出:
+-----+------+-------+
|col_A| col_B|new_col|
+-----+------+-------+
| abc|abcdef| abc|
| abc| a| a|
+-----+------+-------+
我希望new_col 是col_A 的子字符串,长度为col_B。
我试过了
udf_substring = F.udf(lambda x: F.substring(x[0],0,F.length(x[1])), StringType())
df.withColumn('new_col', udf_substring([F.col('col_A'),F.col('col_B')])).show()
但它给出了TypeError: Column is not iterable。
知道如何进行这种操作吗?
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql user-defined-functions