Невозможно создать сеанс искры - PullRequest
1 голос
/ 03 мая 2019

Когда я создаю сеанс искры, он выдает ошибку

  • Невозможно создать сеанс зажигания

  • Используя pyspark, фрагмент кода:

ValueError                                Traceback (most recent call last)
<ipython-input-13-2262882856df> in <module>()
     37 if __name__ == "__main__":
     38     conf = SparkConf()
---> 39     sc = SparkContext(conf=conf)
     40 #     print(sc.version)
     41 #     sc = SparkContext(conf=conf)

~/anaconda3/lib/python3.5/site-packages/pyspark/context.py in __init__(self, master, appName, sparkHome, pyFiles, environment, batchSize, serializer, conf, gateway, jsc, profiler_cls)
    131                     " note this option will be removed in Spark 3.0")
    132 
--> 133         SparkContext._ensure_initialized(self, gateway=gateway, conf=conf)
    134         try:
    135             self._do_init(master, appName, sparkHome, pyFiles, environment, batchSize, serializer,

~/anaconda3/lib/python3.5/site-packages/pyspark/context.py in _ensure_initialized(cls, instance, gateway, conf)
    330                         " created by %s at %s:%s "
    331                         % (currentAppName, currentMaster,
--> 332                             callsite.function, callsite.file, callsite.linenum))
    333                 else:
    334                     SparkContext._active_spark_context = instance

ValueError: Cannot run multiple SparkContexts at once; existing SparkContext(app=pyspark-shell, master=local[*]) created by __init__ at <ipython-input-7-edf43bdce70a>:33 

  • импорт

from pyspark import SparkConf, SparkContext
  • Я попробовал этот альтернативный подход, который тоже не работает:
spark = SparkSession(sc).builder.appName("Detecting-Malicious-URL App").getOrCreate()

Это вызывает еще одну ошибку следующим образом:

NameError: name 'SparkSession' is not defined

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Попробуйте это -

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("Detecting-Malicious-URL App").getOrCreate()

До появления spark 2.0 нам нужно было создать SparkConf и SparkContext для взаимодействия со Spark.

В то время как в Spark 2.0 SparkSession является точкой входа в Spark SQL.Теперь нам не нужно создавать SparkConf, SparkContext или SQLContext, поскольку они инкапсулированы в SparkSession.

Пожалуйста, обратитесь к этому блогу для получения более подробной информации: Как использовать SparkSession в Apache Spark 2.0

0 голосов
/ 03 мая 2019

Искровой контекст используется для подключения к кластеру через менеджер ресурсов. sparkConf требуется для создания объекта контекста spark, в котором хранятся параметры конфигурации, такие как appName (для идентификации вашего драйвера spark), приложение, номер ядра и объем памяти исполнителя, работающего на рабочем узле. Чтобы использовать API-интерфейсы Sql, Hive, Streaming, необходимо создать отдельные контексты.

В то время как SparkSession предоставляет единую точку входа для взаимодействия с базовыми функциями Spark и позволяет программировать Spark с помощью Dataframes и API. Не нужно создавать отдельный сеанс для использования Sql, Hive и т. Д.

Для создания SparkSession вы можете использовать следующий компоновщик

SparkSession.builder.master ( "локальный"). APPNAME ( "Детектирование-Вредоносный-URL App ") .config (" spark.some.config.option "," some-value ")

Чтобы преодолеть эту ошибку

«NameError: имя 'SparkSession' не определено"

вам может понадобиться использовать пакетный вызов, такой как

"из pyspark.sql import SparkSession"

pyspark.sql поддерживает сеанс искры, который используется для создания фреймов данных или регистрации фреймов данных в виде таблиц и т. Д.

и вышеуказанная ошибка

(ValueError: Невозможно запустить несколько SparkContexts одновременно; существует SparkContext (app = pyspark-shell, master = local [*]), созданный init в: 33)

вы указали, что это может быть полезно- ValueError: Невозможно запустить сразу несколько SparkContexts в spark с pyspark

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