Я вызываю kinit keytab прямо перед spark-submit в моем сценарии драйвера оболочки. Дело в том, что он работает сам по себе, но когда я вызываю скрипт драйвера оболочки через Oozie, я получаю эту ошибку:
Stdoutput py4j.protocol.Py4JJavaError: An error occurred while calling
o49.saveAsTextFile.
Stdoutput : org.apache.hadoop.ipc.RemoteException(java.io.IOException):
Delegation Token can be issued only with kerberos or web authentication
Проблема скорее всего здесь
file.coalesce(1,True).saveAsTextFile(FQDNofHadoop+output)
РЕДАКТИРОВАТЬ: В моем сценарии: kinit -k -t /home/me/me.keytab [email protected]
РЕДАКТИРОВАТЬ: Рабочее решение:
я использовал
spark-submit --principal '[email protected]' \ --keytab '/home/me/me.keytab' \
и выполнение скрипта pyspark в oozie работало без ошибок (даже запись в таблицу кустов и т. д.). Регистратор Log4j не работал (с автономными сценариями он работает), но, по крайней мере, print () (stdout в журналы пряжи) да ...
Спасибо
<file>
; затем вы можетеkinit
создать локальный билет в общесерверном кеше для вашего пользователя -- или локальный билет в частном кеше (используяkinit
с пользовательскимKRB5CCNAME
) -- или изменчивый билет сеанса, используя либо Spark--principal / --keytab
, либо пользовательский код, вызывающий HadoopUserGroupInformation
- person Samson Scharfrichter   schedule 29.07.2017UserGroupInformation
будет работать для кода, работающего в драйвере, а не в исполнителях, потому что токены аутентификации по умолчанию создаются и транслируются до запуска драйвера, следовательно, до того, как вы сможете выполнить собственный код. - person Samson Scharfrichter   schedule 29.07.2017