Фильтрация значений массива с помощью pyspark

#apache-spark #pyspark #apache-spark-sql #rdd

#apache-spark #pyspark #apache-spark-sql #rdd

Вопрос:

Я новичок в pyspark и нуждаюсь в решении приведенного ниже вопроса.

В массиве [[-1,1,2,4,5],[3,5,6,-6]], удалите элементы, которые равны <=0, и получите квадрат положительных ненулевых чисел.

Комментарии:

1. версия spark??

2. spark версии 3 и использование python 3

Ответ №1:

Используйте transform функции и filter функции более высокого порядка.

 df.printSchema()
root
 |-- ids: array (nullable = true)
 |    |-- element: array (containsNull = true)
 |    |    |-- element: integer (containsNull = false)

 
 from pyspark.sql import functions as F

df.withColumn("new_ids",F.expr("transform(ids,o -> filter(o, i  -> i > 0))")).show()
 --------------------------------- ------------------------- 
|ids                              |new_ids                  |
 --------------------------------- ------------------------- 
|[[-1, 1, 2, 4, 5], [3, 5, 6, -6]]|[[1, 2, 4, 5], [3, 5, 6]]|
 --------------------------------- ------------------------- 
 

Комментарии:

1. любое другое простое решение с использованием карты rdd и фильтров?

2. это очень простое решение