Вы можете использовать UDF:
from pyspark.sql.functions import udf, col
from pyspark.sql.types import ArrayType
# Suppose this is the dictionary you want to map
map_dict = {'A':1, 'B':2,'C':3,'D':4}
def array_map(array_col):
return list(map(map_dict.get, array_col))
"""
If you prefer list comprehension, you can return [map_dict[k] for k in array_col]
"""
array_map_udf = udf(array_map, ArrayType())
df = df.withColumn("mapped_array", array_map_udf(col("ids")))
Я не могу придумать другой метод, но чтобы получить распараллеленный словарь, вы можете просто использовать метод toJSON
. Это потребует дальнейшей обработки в зависимости от типа ссылки:
import json
df_json = df.toJSON().map(lambda x: json.loads(x))