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()...
происходит в драйвере или отправляется на рабочий узел?