У меня есть столбец в фрейме данных Pyspark со структурой, подобной
Column1
[a,b,c,d,e]
[c,b,d,f,g,h,i,p,l,m]
Я хотел бы вернуть другой столбец со случайным выбором каждого массива в каждой строке, количество, указанное в функции .
Итак, что-то вроде data.withColumn("sample", SOME_FUNCTION("column1", 5))
return:
sample
[a,b,c,d,e]
[c,b,h,i,p]
Надеюсь, что вы избежите python UDF, кажется, что должна быть доступная функция ??
Это работает :
import random
def random_sample(population):
return(random.sample(population, 5))
udf_random = F.udf(random_sample, T.ArrayType(T.StringType()))
df.withColumn("sample", udf_random("column1")).show()
Но, как я уже сказал, было бы хорошо избегать UDF.