Может ли неработающий, неработающий создать сеанс Spark и прочитать файл CSV в набор данных? - PullRequest
0 голосов
/ 27 марта 2020

Java 8 и Spark 2.4.5 (Scala 2.12) здесь. Я также очень новичок в Spark.

Я пытаюсь понять , когда код выполняется на узле драйвера Spark, и , когда передается работникам / исполнителям. .

В частности, когда вы создаете экземпляры SparkContext и SparkSession, должны ли эти экземпляры всегда выполняться в драйвере? Или можно создать экземпляр SparkContext / SparkSession только на обычном старом JVM-приложении (то есть: Java приложении, которое не является ни драйвером Spark, ни рабочим / исполнителем)?

То же самое для чтения сессии. Например, когда я читаю CSV-файл следующим образом:

sparkSession.read()
  .format("csv")
  .load(providedFile.getAbsolutePath());

эти чтения всегда должны выполняться либо на драйвере, либо на рабочем месте, или они могут просто выполняться на «обычном» Java приложение ", которое просто вызывает Spark Core как зависимость?


Редактировать : кажется, что все, что создает SparkSession , является a «Spark Driver» по умолчанию, поэтому тогда мой единственный другой вопрос: как мне сказать, какой код выполняется на драйвере, а какой код передается рабочим / исполнителям?

Будет ли sparkSession.read()... происходит в драйвере или отправляется на рабочий узел?

1 Ответ

1 голос
/ 28 марта 2020

Re: «Как мне сказать, какой код выполняется на драйвере, а какой код передается рабочим / исполнителям»

В общем случае любые преобразования, которые вы выполняете в RDD или Dataframe (например, map, Flatmap, Filter, GroupBy, ReduceByKey и т. д. c.) произойдет на исполнителя. Обычно вы передаете функцию или замыкание при вызове этих преобразований, которые будут выполняться на executor.

Когда вы вызываете действие, например, «собирать» или «брать», вы возвращаете данные обратно драйверу (остерегайтесь OutOfMemory ошибки). Независимо от того, какие операции вы будете выполнять с такими данными, собранными в драйвере, они будут выполняться в драйвере.

Существует много случаев, когда задачи распределяются между исполнителями, а вещи работают из драйвера. Я бы порекомендовал взять вышеуказанные указатели в качестве начала и go через книгу или хороший учебник, в котором говорится об этом.

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