Ошибка говорит само за себя ... В вашем коде ниже
rdd = spark.sparkContext.broadcast(SchemaDFWithoutHeader)
rdd - широковещательная переменная, для использования map на ней выполните rdd.value.Ниже приведен способ его использования.
SchemaWithHeader = rdd.value.map(lambda x: Row(ColName=x[0], Result=bool(x[1])))
Надеюсь, что это помогает ... Продолжайте делиться с сообществом:)
Редактировать 1: Поскольку вы передаете список, rdd.value даст вамсписок в качестве вывода.Список в Python не имеет функции карты.так что вы получаете ошибку, упомянутую в комментариях.Более того, если вы попытаетесь передать RDD, вы получите следующую ошибку: «Похоже, вы пытаетесь передать RDD или ссылаться на RDD из действия или преобразования. Преобразования и действия RDD могут вызываться только драйвером, а не внутри других».преобразований; "
По сути, вы не можете широковещательно передавать СДР, поскольку это уже распределенная структура данных и имеет разделы, и эти разделы уже установлены на нескольких машинах.
Примечание. Надеюсь, код, который вы написали, былпросто чтобы продемонстрировать проблему.Как я не мог понять ваш мыслительный процесс за этим.Тем не менее, ответ по-прежнему в силе.Я рекомендую вам понять концепцию широковещательных переменных, прежде чем внедрять в ваш проект.
Приветствия!
Harjeet