Фильтрация Pyspark при чтении файлов JSON - PullRequest
2 голосов
/ 05 июня 2019

Я пытаюсь создать фрейм данных из файлов json, содержащих месячные сетевые сообщения и получающих ошибки OOM.Инструкция чтения содержит фильтры, которые значительно уменьшат количество записей.

    process_df = (spark.read.json(input_file)
                  .filter((F.col("initiated") == "true")
                           & ((F.col("dest_port") == "80")
                           | (F.col("dest_port") == "443"))))

    process_df.count()

Я думаю, что, несмотря на ленивую оценку, этот способ реализуется, когда данные считываются в исполнители, а затем фильтр применяется как преобразование при вызове count?Это правильно?

Я попытался обойти проблемы с памятью, добавив

.persist(StorageLevel.DISK_ONLY)

, но это привело к зависанию задания с кучей ошибок rpc.

Я думаю, что мое решение - читать мои данные небольшими порциями, фильтровать и затем объединять.Я действительно пытаюсь понять, правильна ли моя ментальная модель работы Spark.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...