Есть ли какая-либо функция в pyspark, которая может выполнять поиск в столбце массива фрейма данных pyspark и проверять наличие строки? & отфильтровать или пометить строку?

df = sqlContext.createDataFrame(pd.DataFrame([('id1', ['a','b','c']),
                                              ('id2', ['a','b','d']),
                                              ('id3', ['c','e','f'])], 
                                              columns=['id', 'items']))

df.show()

from pyspark.sql.functions import udf, col, when
from pyspark.sql.types import ArrayType, StringType, IntegerType

filter_array_udf = udf(lambda arr: [1 if (x =='a' and x=='b') else 0 for x in arr], "int")

df2 = df.withColumn("listed1", filter_array_udf(col("items")))
df2.show(20,0)

df2.show()

Я пытаюсь пометить строку, если определенный идентификатор содержит строку «a» или «b». для которых udf возвращает нулевое значение. Я довольно новичок в udfs. Что мне нужно изменить в данном udf, чтобы получить желаемый результат

df.filter(F.array_contains(F.col('items'),'a')).show()

Это работает только для одной строки, но если я передам ['a', 'b'] в массиве. Выдает ошибку

Unsupported literal type class java.util.ArrayList [a, b]

person Ishant Sahu    schedule 17.06.2021    source источник