Для spark2.4
, используя Dataframes
, вы можете использовать функции более высокого порядка transform and filter
для фильтрации по массиву массивов или другой вложенной структуре данных.
#sample dataframe
df.show()
+----------------------------------------------------------------------------------------------------------+
|list |
+----------------------------------------------------------------------------------------------------------+
|[[componenţa, parlamentului:, a, se, vedea, procesul-verbal], [membership, of, parliament:, see, minutes]]|
+----------------------------------------------------------------------------------------------------------+
df.withColumn("list", F.expr("""transform(list,x-> filter(x, y-> y!='vedea'))""")).show(truncate=False)
+---------------------------------------------------------------------------------------------------+
|list |
+---------------------------------------------------------------------------------------------------+
|[[componenţa, parlamentului:, a, se, procesul-verbal], [membership, of, parliament:, see, minutes]]|
+---------------------------------------------------------------------------------------------------+
В этом случае вы хотите remove
any list
inside a list
, который содержит слово 'vedea'
, вы можете использовать filter
и array_contains
from pyspark.sql import functions as F
df.withColumn("list",\
F.expr("""filter(list,x-> array_contains(x,'vedea')!=True)""")).show(truncate=False)
#+---------------------------------------------+
#|list |
#+---------------------------------------------+
#|[[membership, of, parliament:, see, minutes]]|
#+---------------------------------------------+