Выбрать элементы в processElement () - Apache Beam

Я знаю, что когда мы реализуем преобразование ParDo, мы выбираем отдельные элементы из наших данных (в основном разделенных "\ n"). Но что, если у меня есть элемент, занимающий две строки в моем файле. Могу ли я применить собственное условие для выбора элементов в соответствии с ним? Или всегда нужно размещать элемент в одной строке?


person rish0097    schedule 29.08.2017    source источник


Ответы (1)


Чтение текстовых файлов контролируется TextIO, а не ParDo - я полагаю, это то, что вы имели в виду. Действительно, прямо сейчас TextIO разбивает файлы на 1 элемент в строке, однако работа над этим продолжается. Вы можете следить за работой на https://issues.apache.org/jira/browse/BEAM-2802.

Для этой работы было бы полезно, если бы вы рассказали больше о своем формате файла, чтобы убедиться, что он входит в область действия.

person jkff    schedule 29.08.2017
comment
Привет @jkff ... Я совершенно забыл об этом ... да, у нас есть файл .sql, в котором запросы, естественно, занимают несколько строк. Когда я попытался прочитать их в своей программе обработки данных, запросы в результирующей коллекции PCollection были не в порядке, как указано в одном из моих сообщений, на которые вы ответили - stackoverflow.com/questions/45920895/. Итак, в основном мы пытались выполнить все запросы в этом файле последовательно, используя поток данных. - person rish0097; 11.09.2017
comment
Если вы выполняете запросы последовательно, т.е. не параллельно, зачем вам Dataflow? :) - person jkff; 11.09.2017
comment
Вы правы. Dataflow не требуется для последовательного выполнения, но у нас есть пакетное задание, которое включает в себя множество шагов, и последовательное выполнение запросов является одним из шагов в этом задании. Так что пришлось включить и это. - person rish0097; 12.09.2017
comment
Вы можете выполнить любой настраиваемый последовательный код в конвейере лучей, например, в методе ProcessElement. Если вам просто нужно сделать что-то один раз, вы можете Create.of () отдельную коллекцию элементов и применить к ней ParDo. - person jkff; 13.09.2017
comment
Правильно. Спасибо @jkff !! - person rish0097; 27.09.2017