2016-04-12 2 views
1

Как программа драйвера выполняет «sc.textFile», почему нам нужен файл для присутствия на каждом узле? Если мы скопируем его на каждый узел, то как искра обрабатывает выполнение дублированных данных?Почему Spark требует, чтобы локальный файл присутствовал на каждом узле?

ответ

1

С искровой точки зрения нет дублирует

На водителе он будет решать, сколько разделов вам нужно, и разделить файл соответственно. На водителе, вы получите, чтобы узнать, есть разделы, как

a.file - 0 to 1000 
a.file - 1001 to 2000 
a.file - 2001 to 3000 

Позже на каждом исполнителе будет иметь путь к файлу и конкретному фрагменту для чтения. Они не знают, что вы не используете общую файловую систему. Единственное, что имеет значение, это иметь путь к файлу и знать, где его читать. Может случиться так, что в итоге у вас будет только один исполнитель, но все происходит одинаково. То, что только один исполнитель будет иметь местоположение файла и кусок для чтения. Один за другим, пока весь файл не будет обработан.

Он работает точно так же с HDFS (я предполагаю, что коэффициент репликации равен 1), но с HDFS это действительно просто один каталог с одним файлом (сидеть на определенной машине). И все исполнители идут в этот каталог. Когда коэффициент репликации больше 1, то с точки зрения искры все еще остается только один каталог, но запросы поступают в разные узлы - там, где есть копии файла.

+0

Это помогает .. Спасибо. :) –

+0

Несомненно, сэр .. :) –

+0

@PuneetSingh, thanks =) Решает ли все вопросы? У вас есть еще? Я имею в виду, что может быть что-то, что я могу добавить к ответу. – evgenii

0

Используйте файловую систему hdfs вместо локальной файловой системы, доступную со всех искровых узлов.

+0

Я понимаю это. Но хочу понять логику таких последствий. –

Смежные вопросы