GCP中每天都有Scala应用程序Spark作业在运行。我尝试设置一个在运行完成时发送的通知。因此,我想到的一种方法是从它那里获取日志和特定完成消息的grep
(不确定是否有更好的方法)。但我发现日志只是显示在控制台中,在“职务详细信息”页面中,并且未保存在文件中。
是否有办法将这些日志路由到存储桶中的某个文件,以便在其中进行搜索?是否必须指定在log4j属性文件中显示这些日志的位置,例如将存储桶位置指定为log4j.appender.stdout = org.apache.log4j.ConsoleAppender
我尝试使用此提交作业,但出现以下错误:grep:**-2022-07-08.log: No such file or directory
...
gcloud dataproc jobs submit spark \
--project $PROJECT --cluster=$CLUSTER --region=$REGION --class=***.spark.offer.Main \
--jars=gs://**.jar\
--properties=driver-memory=10G,spark.ui.filters="",spark.memory.fraction=0.6,spark.sql.files.maxPartitionBytes=5368709120,spark.memory.storageFraction=0.1,spark.driver.extraJavaOptions="-Dcq.config.name=gcp.conf",spark.executor.extraJavaOptions="-Dlog4j.configuration=log4j-executor.properties -Dcq.config.name=gcp.conf" \
--gcp.conf > gs://***-$date.log 2>&1
1条答案
按热度按时间drkbr07n1#
默认情况下,Dataproc作业驱动程序日志保存在GCS中Dataproc生成的作业的
driverOutputResourceUri
处。有关详细信息,请参阅此文档。但是IMHO,一个更好的方法来确定一个作业是否已经完成是通过
gcloud dataproc jobs describe <job-id>
1,或者jobs.get REST API 2。