Учебники

PySpark — SparkContext

SparkContext — это точка входа в любую функциональность искры. Когда мы запускаем любое приложение Spark, запускается программа драйвера, которая выполняет основную функцию, и здесь запускается ваш SparkContext. Затем программа драйвера запускает операции внутри исполнителей на рабочих узлах.

SparkContext использует Py4J для запуска JVM и создает JavaSparkContext . По умолчанию в PySpark SparkContext доступен как ‘sc’ , поэтому создание нового SparkContext не будет работать.

SparkContext

В следующем блоке кода содержатся сведения о классе PySpark и параметрах, которые может принимать SparkContext.

class pyspark.SparkContext (
   master = None,
   appName = None, 
   sparkHome = None, 
   pyFiles = None, 
   environment = None, 
   batchSize = 0, 
   serializer = PickleSerializer(), 
   conf = None, 
   gateway = None, 
   jsc = None, 
   profiler_cls = <class 'pyspark.profiler.BasicProfiler'>
)

параметры

Ниже приведены параметры SparkContext.

  • Мастер — это URL кластера, к которому он подключается.

  • appName — название вашей работы.

  • sparkHome — каталог установки Spark.

  • pyFiles — файлы .zip или .py для отправки в кластер и добавления в PYTHONPATH.

  • Среда — рабочие узлы переменных среды.

  • batchSize — количество объектов Python, представленных в виде одного объекта Java. Установите 1, чтобы отключить пакетную обработку, 0, чтобы автоматически выбирать размер партии на основе размеров объекта, или -1, чтобы использовать неограниченный размер партии.

  • Сериализатор — RDD сериализатор.

  • Conf — Объект L {SparkConf} для установки всех свойств Spark.

  • Шлюз — используйте существующий шлюз и JVM, в противном случае инициализируйте новую JVM.

  • JSC — экземпляр JavaSparkContext.

  • profiler_cls — класс пользовательского профилировщика, используемый для профилирования (по умолчанию это pyspark.profiler.BasicProfiler).

Мастер — это URL кластера, к которому он подключается.

appName — название вашей работы.

sparkHome — каталог установки Spark.

pyFiles — файлы .zip или .py для отправки в кластер и добавления в PYTHONPATH.

Среда — рабочие узлы переменных среды.

batchSize — количество объектов Python, представленных в виде одного объекта Java. Установите 1, чтобы отключить пакетную обработку, 0, чтобы автоматически выбирать размер партии на основе размеров объекта, или -1, чтобы использовать неограниченный размер партии.

Сериализатор — RDD сериализатор.

Conf — Объект L {SparkConf} для установки всех свойств Spark.

Шлюз — используйте существующий шлюз и JVM, в противном случае инициализируйте новую JVM.

JSC — экземпляр JavaSparkContext.

profiler_cls — класс пользовательского профилировщика, используемый для профилирования (по умолчанию это pyspark.profiler.BasicProfiler).

Среди вышеперечисленных параметров в основном используются master и appname . Первые две строки любой программы PySpark выглядят так, как показано ниже —

from pyspark import SparkContext
sc = SparkContext("local", "First App")

Пример SparkContext — PySpark Shell

Теперь, когда вы достаточно знаете о SparkContext, давайте запустим простой пример оболочки PySpark. В этом примере мы будем считать количество строк с символом «a» или «b» в файле README.md . Итак, допустим, если в файле 5 строк, а 3 строки имеют символ «a», то результатом будет → Строка с a: 3 . То же самое будет сделано для символа «б».

Примечание. Мы не создаем никакой объект SparkContext в следующем примере, потому что по умолчанию Spark автоматически создает объект SparkContext с именем sc, когда запускается оболочка PySpark. Если вы попытаетесь создать другой объект SparkContext, вы получите следующую ошибку — «ValueError: Невозможно запустить несколько SparkContexts одновременно».

PySpark Shell

<<< logFile = "file:///home/hadoop/spark-2.1.0-bin-hadoop2.7/README.md"
<<< logData = sc.textFile(logFile).cache()
<<< numAs = logData.filter(lambda s: 'a' in s).count()
<<< numBs = logData.filter(lambda s: 'b' in s).count()
<<< print "Lines with a: %i, lines with b: %i" % (numAs, numBs)
Lines with a: 62, lines with b: 30

Пример SparkContext — Программа Python

Давайте запустим тот же пример, используя программу на Python. Создайте файл Python с именем firstapp.py и введите следующий код в этот файл.

----------------------------------------firstapp.py---------------------------------------
from pyspark import SparkContext
logFile = "file:///home/hadoop/spark-2.1.0-bin-hadoop2.7/README.md"  
sc = SparkContext("local", "first app")
logData = sc.textFile(logFile).cache()
numAs = logData.filter(lambda s: 'a' in s).count()
numBs = logData.filter(lambda s: 'b' in s).count()
print "Lines with a: %i, lines with b: %i" % (numAs, numBs)
----------------------------------------firstapp.py---------------------------------------

Затем мы выполним следующую команду в терминале, чтобы запустить этот файл Python. Мы получим тот же результат, что и выше.