Я знаю, что когда мы реализуем преобразование ParDo, мы выбираем отдельные элементы из наших данных (в основном разделенных "\ n"). Но что, если у меня есть элемент, занимающий две строки в моем файле. Могу ли я применить собственное условие для выбора элементов в соответствии с ним? Или всегда нужно размещать элемент в одной строке?
Выбрать элементы в processElement () - Apache Beam
Ответы (1)
Чтение текстовых файлов контролируется TextIO
, а не ParDo
- я полагаю, это то, что вы имели в виду. Действительно, прямо сейчас TextIO
разбивает файлы на 1 элемент в строке, однако работа над этим продолжается. Вы можете следить за работой на https://issues.apache.org/jira/browse/BEAM-2802.
Для этой работы было бы полезно, если бы вы рассказали больше о своем формате файла, чтобы убедиться, что он входит в область действия.
person
jkff
schedule
29.08.2017
Привет @jkff ... Я совершенно забыл об этом ... да, у нас есть файл .sql, в котором запросы, естественно, занимают несколько строк. Когда я попытался прочитать их в своей программе обработки данных, запросы в результирующей коллекции PCollection были не в порядке, как указано в одном из моих сообщений, на которые вы ответили - stackoverflow.com/questions/45920895/. Итак, в основном мы пытались выполнить все запросы в этом файле последовательно, используя поток данных.
- person rish0097; 11.09.2017
Если вы выполняете запросы последовательно, т.е. не параллельно, зачем вам Dataflow? :)
- person jkff; 11.09.2017
Вы правы. Dataflow не требуется для последовательного выполнения, но у нас есть пакетное задание, которое включает в себя множество шагов, и последовательное выполнение запросов является одним из шагов в этом задании. Так что пришлось включить и это.
- person rish0097; 12.09.2017
Вы можете выполнить любой настраиваемый последовательный код в конвейере лучей, например, в методе ProcessElement. Если вам просто нужно сделать что-то один раз, вы можете Create.of () отдельную коллекцию элементов и применить к ней ParDo.
- person jkff; 13.09.2017
Правильно. Спасибо @jkff !!
- person rish0097; 27.09.2017