Есть ли способ выполнить команду Redis GET со встроенным преобразованием ввода-вывода Redis Beam Apache?

В моем случае для Google Cloud Dataflow я использую Redis в качестве кеша во время конвейера, поскольку выполняемое преобразование зависит от некоторых кэшированных данных. Это означало бы выполнение команд Redis GET. В документации по официальному встроенному преобразованию ввода-вывода Redis упоминается поддержка нескольких методов:

read - "предоставляет источник, который возвращает ограниченную коллекцию PCollection, содержащую пары ключ / значение в виде KV"

readAll - «может использоваться для запроса сервера Redis с использованием входных элементов PCollection в качестве шаблона ключа (как String)»

Похоже, что readAll не соответствует команде GET, потому что входная коллекция PCollection будет использоваться для фильтрации результата сканирования всего источника Redis, так что это не то, что я ищу.

Мне было интересно, есть ли что-то, чего мне не хватает, когда я смотрю на встроенное преобразование ввода-вывода, которое позволило бы мне использовать мой вариант использования, или есть ли альтернативы, такие как сторонние преобразования ввода-вывода с открытым исходным кодом, которые его поддерживают. Или это что-то принципиально несовместимое с Apache Beam?


person Matt Welke    schedule 19.09.2018    source источник


Ответы (1)


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

person hscasn    schedule 25.09.2018
comment
Это хороший ответ. Сообщение в блоге GCP cloud.google.com/blog/products/gcp/ рассказывает об обогащении данных с помощью внешней службы во время преобразования. Если клиент является потокобезопасным, вы должны объявить его статически в своем преобразовании. В противном случае вы бы создали его в методе жизненного цикла startBundle. Сообщение в блоге предупреждает о таких проблемах, как перегрузка внешней службы и возникновение обратного давления в конвейере, если вы это сделаете, и что в этом могут помочь такие методы, как группировка по ключу и пакетные запросы к внешней службе. - person Matt Welke; 14.04.2020