Я знаю, что файлы данных PySpark неизменяемы, поэтому я хотел бы создать новый столбец, полученный в результате преобразования, применяемого к существующему столбцу PySpark DataFrame. Мои данные слишком велики, чтобы использовать collect().Удалить элемент из столбца данных PySpark DataFrame
Колонок в вопросе является списком списков уникальных Интсов (без повторов в междунар в данном списке), например:
[1]
[1,2]
[1,2,3]
[2,3]
Вышеуказанной игрушка примером, так как мой фактический DataFrame имеет списки с максимальной длиной 52 уникальных ints. Я хотел бы создать столбец, который выполняет итерацию по списку списков int и удаляет один элемент для каждого цикла. Элемент, который нужно удалить, будет одним из множества уникальных элементов во всех списках, который в этом случае равен [1,2,3]
.
Так что для первой итерации:
Remove элемента 1, так что результаты являются:
[]
[2]
[2,3]
[2,3]
Для второй итерации:
Remove элемента 2, таким образом, что результаты являются:
[1]
[1]
[1,3]
[3]
и т. Д. И повторить выше с элементом 3.
Для каждой итерации я хотел бы добавить результаты в исходный файл PySpark DataFrame для запуска некоторых запросов, используя этот «фильтрованный» столбец в качестве фильтра строк для исходного DataFrame.
Мой вопрос в том, как преобразовать столбец DataSpark в файл PySpark в список? Мой набор данных большой, поэтому df.select('columnofintlists').collect()
приводит к проблемам с памятью (например: Kryo serialization failed: Buffer overflow. Available: 0, required: 1448662. To avoid this, increase spark.kryoserializer.buffer.max value.
).