#apache-spark #pyspark #databricks #spark-structured-streaming
Вопрос:
У меня хранится большой файл. Я хочу загрузить и обработать этот файл в базе данных (pyspark). Но поскольку размер файла большой, будет неэффективно загружать весь файл сразу, а затем обрабатывать его. Поэтому я хочу загрузить этот файл по частям, а затем обработать его одновременно, пока загружается следующая часть. Итак, как я могу прочитать этот файл по частям? Одна из идей, о которой я думал, заключалась в использовании структурированной потоковой передачи. Но и в этом случае весь файл загружается одним пакетом. Итак, как загрузить его в несколько пакетов?
Ответ №1:
Вы не можете заставить Spark избежать сканирования всех данных, если все они находятся в одном файле.
Во время чтения данных Spark разделит данные на разделы в зависимости от конфигурации spark.sql.files.maxPartitionBytes
, которая по умолчанию составляет 128 МБ. На основе полученного количества разделов вместе с доступным количеством ядер в кластере Spark данные будут обрабатываться параллельно.