pyspark udf函数

from pyspark.sql.types import ArrayType
 
def square_list(x):
    return [float(val)**2 for val in x]
square_list_udf = udf(lambda y: square_list(y), ArrayType(FloatType()))
df.select('integer_arrays', square_list_udf('integer_arrays')).show()

PySpark中的UDFs函数

https://www.pianshen.com/article/7048214738/

解决dataframe数据量太少而导致集训运行时间过慢的问题,由于dataframe太小,spark会将整个dataframe分配到同一个executor,而其他的executor会闲置等待,也就是说spark并没有将python function并行化运算。

为了解决这个问题,我们可以在调用UDF函数之前将dataframe重分片。

df_repartitioned = df.repartition(100)

当我们提交一个作业时,要确保分片的数量要要多余executor的个数。

发布了59 篇原创文章 · 获赞 11 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/u013385018/article/details/105668612