2015-07-17 3 views
2

Эта проблема является продолжением моего предыдущего вопроса here, который, казалось бы, был разрешен, но приводит к этому как к другому вопрос.«KeyError:« SPARK_HOME »,« не может загрузить основной класс из JAR »при запуске PySpark в качестве рабочего процесса Oozie

Я использую Spark 1.4.0 на Cloudera QuickstartVM CHD-5.4.0. Когда я запускаю мой PySpark сценарий как SparkAction в Oozie, я встречаю эту ошибку в журналах работы/контейнера Oozie:

KeyError: 'SPARK_HOME' 

Потом я наткнулся this solution и this, которые на самом деле являются для Спарк 1.3.0, хотя я все еще попытался. Документация, похоже, говорит, что эта проблема уже исправлена ​​для Spark версии 1.3.2 и 1.4.0 (но здесь я, столкнувшись с той же проблемой).

Предлагаемое решение в связи было то, что мне нужно установить spark.yarn.appMasterEnv.SPARK_HOME и spark.executorEnv.SPARK_HOME к чему-либо, даже если это просто любой путь, который не указывает на фактическое SPARK_HOME (т.е. /bogus, хотя я установить их фактическому SPARK_HOME).

Вот мой рабочий процесс после того, как:

<spark xmlns="uri:oozie:spark-action:0.1"> 
     <job-tracker>${resourceManager}</job-tracker> 
     <name-node>${nameNode}</name-node> 
     <master>local[2]</master> 
     <mode>client</mode> 
     <name>${name}</name> 
     <jar>${workflowRootLocal}/lib/my_pyspark_job.py</jar> 
     <spark-opts>--conf spark.yarn.appMasterEnv.SPARK_HOME=/usr/lib/spark spark.executorEnv.SPARK_HOME=/usr/lib/spark</spark-opts> 
    </spark> 

который, кажется, решить исходную задачу выше. Однако, это приводит к другой ошибке при попытке осмотреть STDERR лога контейнера Oozie:

Error: Cannot load main class from JAR file:/var/lib/hadoop-yarn/cache/yarn/nm-local-dir/usercache/cloudera/appcache/application_1437103727449_0011/container_1437103727449_0011_01_000001/spark.executorEnv.SPARK_HOME=/usr/lib/spark 

Если я использую Python, он не должен рассчитывать на main class право? Пожалуйста, обратите внимание на предыдущую статью о том, что пример работы с Oozie, поставляемый с Cloudera QuickstartVM CDH-5.4.0, который содержит SparkAction, написанный на Java, работал в моих тестах. Кажется, что проблема только в Python.

Цените всех, кто может помочь.

+0

я получаю сообщение об ошибке, как это «Err или: SPARK_HOME не существует для приложения python в режиме пряжи. " любая идея это? – karthik

ответ

1

Вместо установки spark.yarn.appMasterEnv.SPARK_HOME и spark.executorEnv.SPARK_HOME переменных, попробуйте и добавьте следующие строки коды для вашего питона сценария перед установкой вашего SparkConf()

os.environ["SPARK_HOME"] = "/path/to/spark/installed/location" 

Найдена ссылка here

Это помогло мне решить эту ошибку вы сталкиваетесь, но я столкнулся следующее сообщение об ошибке после

Traceback (most recent call last): 
    File "/usr/hdp/current/spark-client/AnalyticsJar/boxplot_outlier.py", line 129, in <module> 
    main() 
    File "/usr/hdp/current/spark-client/AnalyticsJar/boxplot_outlier.py", line 60, in main 
    sc = SparkContext(conf=conf) 
    File "/hadoop/yarn/local/filecache/1314/spark-core_2.10-1.1.0.jar/pyspark/context.py", line 107, in __init__ 
    File "/hadoop/yarn/local/filecache/1314/spark-core_2.10-1.1.0.jar/pyspark/context.py", line 155, in _do_init 
    File "/hadoop/yarn/local/filecache/1314/spark-core_2.10-1.1.0.jar/pyspark/context.py", line 201, in _initialize_context 
    File "/hadoop/yarn/local/filecache/1314/spark-core_2.10-1.1.0.jar/py4j/java_gateway.py", line 701, in __call__ 
    File "/hadoop/yarn/local/filecache/1314/spark-core_2.10-1.1.0.jar/py4j/protocol.py", line 300, in get_return_value 
py4j.protocol.Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext. 
: java.lang.SecurityException: class "javax.servlet.FilterRegistration"'s signer information does not match signer information of other classes in the same package 
Смежные вопросы