我正在AWS EMR上運行一個非常簡單的Spark作業,並且似乎無法從我的腳本獲取任何日誌輸出。AWS EMR Spark Python日誌記錄
我已經與印刷試圖標準錯誤:
from pyspark import SparkContext
import sys
if __name__ == '__main__':
sc = SparkContext(appName="HelloWorld")
print('Hello, world!', file=sys.stderr)
sc.stop()
並採用火花記錄器,如圖here:
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
日誌顯示作業已被接受,運行併成功完成。
所以我的問題是,我在哪裏可以查看我的腳本的日誌輸出?或者我應該在腳本中更改哪些內容才能正確記錄?
編輯:我用這個命令提交步驟:
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
您將工作提交給EMR的參數是? – user3154952
我發現特定步驟的日誌記錄幾乎不會出現在控制檯或EMR控制檯旁邊的步驟中的stderr日誌中。通常我在作業的容器日誌中找到我想要的東西(通常是標準輸出)。他們通常在's3:// mybucket/logs/emr/spark/j-XXXXXX/containers/application_XXXXXXXXX/container_XXXXXXX/...' –
@GregReda我在那裏找到了日誌。謝謝!如果您將它作爲答案發布,我會接受它。 – jarbaugh