我试图在UDF函数中从PySpark框架中的MapType列中提取值。
下面是PySpark框架:
+-----------+------------+-------------+
|CUSTOMER_ID|col_a |col_b |
+-----------+------------+-------------+
| 100 |{0.0 -> 1.0}| {0.2 -> 1.0}|
| 101 |{0.0 -> 1.0}| {0.2 -> 1.0}|
| 102 |{0.0 -> 1.0}| {0.2 -> 1.0}|
| 103 |{0.0 -> 1.0}| {0.2 -> 1.0}|
| 104 |{0.0 -> 1.0}| {0.2 -> 1.0}|
| 105 |{0.0 -> 1.0}| {0.2 -> 1.0}|
+-----------+------------+-------------+
个字符
下面是UDF
@F.udf(T.FloatType())
def test(col):
return col[1]
型
下面是代码:
df_temp=df_temp.withColumn('test',test(F.col('col_a')))
型
当我把col_a列的值传递给自定义项时,我没有得到它。有人能解释一下吗?
2条答案
按热度按时间093gszye1#
在以下情况下,符号
col[1]
将成功地从 map type列中提取值:col
是列表达式1
是Map中存在的键在你的例子中,你的Map没有一个键=1,这就是为什么它不工作。
字符串
c9x0cxw02#
要提取maptype列中的值,请使用map_values()
字符串