Как получить рабочие журналы для задания Dask-YARN? - PullRequest
0 голосов
/ 11 июля 2019

У меня есть простой скрипт Dask-YARN, который выполняет только одну задачу: загрузите файл из HDFS, как показано ниже.Тем не менее, я столкнулся с ошибкой в ​​коде, поэтому я добавил оператор print в функцию, но я не вижу, чтобы этот оператор выполнялся в рабочих журналах, которые я получаю с помощью yarn logs -applicationId {application_id}.Я даже попробовал метод Client.get_worker_logs(), однако он также не отображает stdout, просто показывает некоторые INFO о работниках.Как получить рабочие журналы после завершения выполнения кода?

import sys
import numpy as np
import scipy.signal
import json

import dask
from dask.distributed import Client
from dask_yarn import YarnCluster


@dask.delayed
def load(input_file):
    print("In call of Load...")
    with open(input_file, "r") as fo:
        data = json.load(fo)
    return data


# Process input args
(_, filename) = sys.argv


dag_1 = {
    'load-1': (load, filename)
}

print("Building tasks...")
tasks = dask.get(dag_1, 'load-1')

print("Creating YARN cluster now...")
cluster = YarnCluster()
print("Scaling YARN cluster now...")
cluster.scale(1)
print("Creating Client now...")
client = Client(cluster)

print("Getting logs..1")
print(client.get_worker_logs())

print("Doing Dask computations now...")
dask.compute(tasks)

print("Getting logs..2")
print(client.get_worker_logs())

print("Shutting down cluster now...")
cluster.shutdown()

1 Ответ

0 голосов
/ 19 июля 2019

Я не уверен, что здесь происходит, операторы печати должны (и обычно так) оказываются в файлах журналов, хранящихся в yarn.

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

from distributed.worker import logger
logger.info("This will show up in the worker logs")
...