SparkContext — это точка входа в любую функциональность искры. Когда мы запускаем любое приложение Spark, запускается программа драйвера, которая выполняет основную функцию, и здесь запускается ваш SparkContext. Затем программа драйвера запускает операции внутри исполнителей на рабочих узлах.
SparkContext использует Py4J для запуска JVM и создает JavaSparkContext . По умолчанию в PySpark SparkContext доступен как ‘sc’ , поэтому создание нового 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 одновременно».
<<< 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. Мы получим тот же результат, что и выше.