Ошибка: назначения Dynamic с абстрактным классом - Apache Beam - PullRequest
0 голосов
/ 09 мая 2019

У меня есть 4 отдельные таблицы BigQuery, которые необходимо заполнить. Я создал абстрактный класс BaseBQTable, который расширяют эти другие таблицы.

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

Вот код:

BQTableMessages.apply("Push to Bigquery", BigQueryIO.write()
                .to(new DynamicDestinations<BaseBQTable, BaseBQTable>() {

                    public BaseBQTable getDestination(ValueInSingleWindow<BaseBQTable> element) {
                        return element.getValue();
                    }

                    public TableDestination getTable(BaseBQTable tableObj) {
                        String s = tableObj.toString();
                        TableDestination mydestination = tableObj.getTableDestination();
                        // Maybe it doesn't like using the method above because it itself is an abstract class
                        return mydestination;
                    }

                    public TableSchema getSchema(BaseBQTable tableObj) {
                        return null;
                    }
                })

Если я закомментирую строку, где я использую метод getTableDestination, или заменим на return null, intelliJ не жалуется.

Однако, как это я получаю эту смутную ошибку;

Не удается разрешить метод 'to (анонимный org.apache.DynamicDestination, bqpackage.BaseBQTable, bqpackage.BaseBQTable>'

У меня такое ощущение, что ему не нравится тот факт, что элемент ввода является абстрактным классом, но я относительно новичок в Java.

Любые предложения с благодарностью! Спасибо

...