Обработка (удаление и запись) неверных данных, опубликованных производителем Kafka, так что Spark (Java) Consumer не сохраняет их в HDFS - PullRequest
0 голосов
/ 17 марта 2020

В настоящее время я использую Spark Consumer, встроенный в Java, чтобы читать записи (json), опубликованные Kafka Producer, и хранить их в формате hdf. Если, скажем, моя запись имеет следующие атрибуты (идентификатор, имя, компания, дата публикации), в настоящее время я обрабатываю исключение таким образом, что, если один из атрибутов отсутствует, программа выдает исключение времени выполнения с сообщением журнала, в котором отображается одно из следующих значений: атрибут отсутствует, но проблема в том, что из-за исключения все искровые задания полностью прекращаются. Я хотел бы справиться с этими плохими записями, избегая этого, чтобы вместо остановки всей искровой работы программа сбрасывала и записывала эти плохие записи вместо того, чтобы выдавать исключение.

1 Ответ

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

Ответ будет основан на мнении. Вот что я бы сделал,

Не регистрируйте отклонения в файле журнала, потому что это может быть большим, и вам, возможно, придется повторно обработать их. Вместо этого создайте другой набор данных для отклоненных записей с указанием причины отклонения. Ваш процесс будет производить 2 набора данных - хорошие и отклоненные.

Исключение не следует использовать для управления потоком кода, хотя это возможно. Я бы использовал идею предиката / фильтра / IF-условия, которая будет проверять данные и отклонять те из них, которые не соответствуют условию предиката / фильтра / IF.

Если вы используете исключение, тогда связывайте его с обработкой отдельной записи, а не всей работы. Эту идею лучше избегать.

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