Как обновить / обновить боковой ввод в каждом окне

Я использую луч Apache, чтобы объединить несколько потоков вместе с некоторыми поисками. У меня есть 2 сценария. Если размер поиска огромен, я хотел, чтобы боковой ввод перезагружался / обновлялся при каждой обработке записи (т.е. я буду запрашивать базу данных с предложением where), а если размер поиска меньше, перезагружать / обновлять один раз день.

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

Я использовал приведенный ниже код для обновления бокового ввода один раз в день.

PCollectionView<Map<String, String>> lkp =
        p.apply(GenerateSequence.from(0)).withRate(1, Duration.standardDays(1))
            .apply(
                Window.<Long>into(new GlobalWindows())
                    .triggering(Repeatedly.forever(AfterProcessingTime.pastFirstElementInPane()))
                    .discardingFiredPanes())
            .apply(
                ParDo.of(
                    new DoFn<Long, Map<String, String>>() {

                      private static final long serialVersionUID = 1L;

                      @ProcessElement
                      public void process(
                          @Element Long input, OutputReceiver<Map<String, String>> o) {
                        Map<String, String> map = HiveConnection.getHiveConnection("select * from table");
                        o.output(map);
                      }
                    }))
            .apply(View.<Map<String, String>>asSingleton());

Пожалуйста, ознакомьте меня с лучшими практиками для таких случаев и предоставьте пример кода для лучшего понимания.

Спасибо гаутам

1 ответ

Решение

Вы используете правильный рекомендуемый шаблон для небольших ежедневных поисков.

В большом случае, вместо того чтобы использовать SideInput, обычно рекомендуется использовать выноску из DoFn. Этот старый блог содержит пример шаблона "Вызов внешних служб для обогащения данных".

Руководство по распространенным шаблонам сценариев использования Cloud Dataflow, часть 1

Я постараюсь найти время, чтобы добавить этот шаблон на страницы шаблонов Beam по адресу:

Образцы Луча

Другие вопросы по тегам