微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将函数应用于 RDD 中的列python、spark

如何解决将函数应用于 RDD 中的列python、spark

这是我的RDD:

id|               arr |
+--------------------+-
|1|  [8,5,1,11,10,8,2]|
|2|    [3,6,3,2]|
|3|    [4,2,3]|
|4|    [0,0]|
|5|    [3,4,7,2]|
|6|    [1,0]|
|7|    [2,9,0]|
|8|    [3,3]|
|9| [1,12,5]|

我正在研究如何应用一个函数来对列表中的所有数字求和并在单独的列中返回总和。这是我的功能(我使用python)。它适用于一个数组,但我不知道如何将它应用于 RDD 中的一列。

def sum_func(x):
  t = 0
  for i in range(0,len(x)):
    t = t + x[i]
  return t == 0

解决方法

为了将其应用于数据帧上的列,您可以创建并应用用户定义函数 (UDF)。

from pyspark.sql.functions import udf
from pyspark.sql.types import IntegerType

def sum_func(x):
  t = 0
  for i in range(0,len(x)):
    t = t + x[i]
  return t

# Creating the UDF with return type Integer

sum_func_udf = udf(sum_func,IntegerType())




然后在您的数据帧上(假设它存储在 df 中),我们使用 withColumn 添加另一列

df = df.withColumn(
   sum_func_udf(df.arr).alias("sum")
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。