Можно ли выполнять поиск по столбцам с помощью Beam SQL? Я нашел класс BeamJoinTransforms.JoinAsLookup
, но не нашел ни одного рабочего фрагмента.
В настоящее время, чтобы выполнять поиск в кодах Apache Beam, я следую практике выполнения «левого соединения» с использованием CoGroupByKey / SideInput и создания отфильтрованных строк таблицы, поддерживая сопоставление столбцов в моем коде.
Я считаю, что это можно сделать и с помощью Beam SQL, но с использованием более эффективного способа работы с поисковыми запросами. У кого-нибудь есть рабочий сниппет для этого? Ищу примеры, в которых я мог бы преобразовать PCollection<TableRow>
в Pcollection<Row>
и выполнить поиск полей с помощью библиотеки Beam SQL.
Я не верю, что есть какая-то конкретная версия этой логики в комплекте с Beam SDK. Предполагается, что он сработает, когда одна из таблиц в объединении является экземпляром BeamSeekableTable
, см. эта часть исходного кода. Для получения дополнительной информации вы можете прочитать исходный запрос на перенос, который представил эту функцию: PR-4196
Однако в настоящее время у BeamSeekableTable
нет рабочих реализаций в Beam SDK. Потенциально вы можете реализовать свой собственный TableProvider
, который также возвращает BeamSqlTable
, реализующий этот BeamSeekableTable
. Например, см. здесь, как TableProvider
реализован для текстовые таблицы (CSV, строки).