Я запускаю очень простое искровое задание на AWS EMR и, похоже, не могу получить какой-либо вывод журнала из моего script.
Я пробовал с печатью на stderr:
from pyspark import SparkContext
import sys
if __name__ == '__main__':
sc = SparkContext(appName="HelloWorld")
print('Hello, world!', file=sys.stderr)
sc.stop()
И используя искровой журнал, как показано здесь:
from pyspark import SparkContext
if __name__ == '__main__':
sc = SparkContext(appName="HelloWorld")
log4jLogger = sc._jvm.org.apache.log4j
logger = log4jLogger.LogManager.getLogger(__name__)
logger.error('Hello, world!')
sc.stop()
EMR дает мне два файла журнала после выполнения задания: controller
и stderr
. Ни один журнал не содержит строку "Hello, world!"
. Я понимаю, что stdout
перенаправлен на stderr
в искру. Журнал stderr
показывает, что задание принято, выполняется и успешно завершено.
Итак, мой вопрос: где я могу просмотреть выход журнала script? Или что я должен изменить в своем script для правильного ведения журнала?
Изменить: я использовал эту команду для отправки шага:
aws emr add-steps --region us-west-2 --cluster-id x-XXXXXXXXXXXXX --steps Type=spark,Name=HelloWorld,Args=[--deploy-mode,cluster,--master,yarn,--conf,spark.yarn.submit.waitAppCompletion=true,s3a://path/to/simplejob.py],ActionOnFailure=CONTINUE