Как напечатать операторы внутри функции, примененной к Spark RDD? - PullRequest
0 голосов
/ 30 мая 2020

Я применяю функцию к Spark RDD, например:

data_2 = sqlContext.createDataFrame(pandas_df,data_schema)

data_3 = data_2.rdd.map(lambda x: parallelized_func(x, **args*)).collect()

Теперь функция parallelized_fun c выглядит примерно так:

def parallelized_func(a,b,c):
    ####FUNCTION BODY#####
    print("unique identifier for each row in pandas_df")
    return {'df1':df1,'df2':df2}

Проблема Я столкнулся с этим: когда я запускаю оператор "data_3 = ..." выше в записной книжке Databricks, я хочу, чтобы уникальный идентификатор, который я печатаю внутри parallelized_fun c, отображался где-то, на некоторых console, потому что это упростило бы отладку при возникновении проблемы с любой строкой в ​​фрейме данных pandas_df.

Я попытался проверить консоли std_out и std_err для каждого исполнителя, выполняющего задания, но всегда есть целая загрузка других операторов, которые занимают большую часть консоли (все операторы Spark, связанные с различными выполняемыми задачами, я полагаю ). Иногда я могу найти свой оператор печати в этом огромном море других операторов, но это действительно неэффективный и неэффективный способ отладки.

Есть ли лучший способ go печати такого оператора? Или лучший способ его найти? Могу ли я, например, подавить все другие операторы, связанные с выполнением, которые Spark постоянно выводит на консоль?

Присоединение снимка других операторов, которые печатаются на консоли.

1 Ответ

0 голосов
/ 30 мая 2020

Распечатать, это не совсем хорошее решение, потому что, как вы сказали, есть тонны журналов, которые вызывают запись (и печать для отладки тоже не годится).

  1. Вы можете сделать регистратор, который напишите свои журналы в другое место (таким образом, только ваши журналы будут записаны туда), например, NFS / где бы вы ни могли его записать. (даже локально на исполнителях, а затем проверьте это)

  2. Если вы попытаетесь найти «поврежденные» строки, возможно, только для отладки, отфильтруйте только поврежденные строки и соберите их в драйвер, а затем вы сможете проверить строки локально на ноутбуке.

...