Является ли .CSV файл разбитым и обработанным параллельно Spark - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть файл .csv размером 100 ГБ. Я хочу загрузить его в Spark как можно быстрее.

Внутренне Spark разбивает файл на порции и анализирует порции параллельно на нескольких узлах? Или Spark анализирует файл, используя только один узел, и распределяет кадры данных между узлами?

Ответы [ 2 ]

3 голосов
/ 22 февраля 2020

По умолчанию Spark делит CSV file на ~128MB фрагментов для каждого потока и считывает файл CSV в распределенном порядке.

Example:

Чтение CSV-файла 3126179159 байтов в режиме кластера пряжи, разделенного на 24 разделов (задач) и чтения файла с параллельными потоками, которые доступны для вашего приложения!

i.e 3126179159/(24*1024) = ~128MB

enter image description here

Вы можете проверить how many partitions ваш файл был разделен в пользовательском интерфейсе задания на работу (или) пользовательский интерфейс сервера истории искры. Это равно количеству выполненных задач для файла, прочитанного. Вы можете найти это, посмотрев «выполненные задания» на вкладке «задания» пользовательского интерфейса и просмотрев файл для чтения.

1 голос
/ 22 февраля 2020

Внутренне Spark разбивает файл на порции и анализирует порции параллельно на нескольких узлах? Или Spark анализирует файл только с использованием одного узла и распределяет кадры данных между узлами?

Spark разбивает файл на куски, называемые разделами (единицами parllelism), если вы используете перераспределение или если вы не перераспределяют количество разделов по умолчанию, которое потребуется.

Вы можете увеличить или уменьшить количество разделов, используя repartition, но можете только уменьшить количество разделов, используя coalesce

см. здесь

Наконец, в зависимости от количества исполнителей и ядер, он будет обрабатывать данные на нескольких узлах или одном узле на основе ваших параметров spark-submit.

...