код pyspark в l oop действует не так, как отдельные исполнения - PullRequest
0 голосов
/ 25 марта 2020

Следующий код выполняет некоторые задания с «пропуском заданий» через несколько раз через l oop, и df, который читается на этой итерации myfun c, возвращается с 0 строками (но, как ни странно, с правильным количеством столбцов):

for i in range(len(dates)-1):
  date1,date2=dates[i],dates[i+1]
  params['file_path'] = ['s3a://path/to/files{}.json'.format(date1),'s3a://path/to/files{}.json'.format(date2)]
  df = myfunc(params)

Однако, когда я запускаю его «вручную» несколько раз, все хорошо - нет пропущенных заданий и df возвращаются полностью.

date1,date2=dates[0],dates[1]
params['file_path'] = ['s3a://path/to/files{}.json'.format(date1),'s3a://path/to/files{}.json'.format(date2)]
df = myfunc(params)

Все вышеперечисленное работает нормально, и когда я перехожу на date1,date2=dates[1],dates[2], тоже все в порядке, и т. Д. c. Не так много файлов, и я уже закончил их все вручную, как указано выше, но хотел бы знать, что происходит. Имена файлов, сгенерированные в for l oop, работают нормально, когда я копирую их в свои параметры. Я далеко не специалист по искрам, поэтому дайте мне знать, если есть что-то очевидное, чтобы проверить.

1 Ответ

0 голосов
/ 26 марта 2020

Не зная кода myfunc, я могу только догадываться о вашей проблеме.
Вероятно, проблема с 0 строками возникает из присваивания df = myfunc(params), которое все время перезаписывает df и не добавляется к предыдущему. ДФ. Вероятно, в течение последних двух дат он просто пуст.
Пропуск заданий обычно происходит из-за кеширования. Вы где-нибудь используете кеширование?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...