У нас есть очень стандартное задание Spark, которое считывает файлы журнала из s3 и затем обрабатывает их. Очень простой искр...
val logs = sc.textFile(somePathTos3)
val mappedRows = logs.map(log => OurRowObject.parseLog(log.split("\t")))
val validRows = mappedRows.filter(log => log._1._1 != "ERROR")
...and continue processing
Где OurRowObject.parseLine
берет необработанную строку журнала и сопоставляет ее с некоторой (ключом, значением) парой (например, ( (1,2,3,4), (5,6,7) )
), после чего мы можем обрабатывать. Теперь, если parseLine
обнаруживает журнал проблемных проблем, empty и т.д.), он вернет некоторое значение дозорности (например, ( ("ERROR", ...), (...) )
, который затем отфильтрует шаг фильтра.
Теперь, что я пытался найти способ сделать, это просто не включать строку проблемы во время карты... какой-то способ сказать искру "Эй, это пустая/неправильная строка, пропустите ее и не включают в себя пару для него", вместо этого дополнительного шага фильтра.
Мне еще не удалось найти способ сделать это, и мне очень интересно, что эта функциональность не существует (AFAICanFind).
Спасибо