Как обработать ошибку при загрузке Spark DataFrame в режиме «FAILFAST». Ленивый вопрос оценки - PullRequest
0 голосов
/ 29 марта 2019

Я написал фрагмент кода, который загружает несколько файлов .csv из HDSF, и я хотел бы только загрузить файлы, где все значения соответствуют предопределенной схеме.

Для этого я установил mode = "FAILFAST", ожидая, что мой код выдаст ошибку при попытке загрузить CSV-файл с поврежденными значениями. Однако из-за отложенной оценки (это мое предположение) ошибка не будет отображаться, пока я не вызову действие, такое как .show ().

Вот мой код:

for file in files:
   try:
      df=spark.read.csv(file, schema=someschema, mode="FAILFAST")
      #some transformations
   except:
      print("File no loaded due to values not matching schema")

Единственный способ, с помощью которого я нашел в своем операторе исключения сообщение об ошибке, - это принудительно выполнить действие после загрузки фрейма данных, такого как df.show (). Тем не менее, мне кажется немного странным это делать. Есть ли другой способ заставить мой код выдавать ошибку сразу после загрузки файла CSV. Если это невозможно, как бы вы загрузили только те файлы, где все их значения соответствуют схеме? Спасибо:)

...