Нужен универсальный c формат для преобразования коллекции в Tablerow - PullRequest
0 голосов
/ 31 марта 2020

Я выполняю преобразование, читая CSV-файл из корзины и сохраняя его в Big Query

PCollection quotes = .... // считываю данные и выполняю преобразование

// запись в существующий BQ таблица, которая имеет 2 столбца «источник» и «цитата».

quotes.apply(
                MapElements.into(TypeDescriptor.of(TableRow.class))
                    .via(
                        (Quote elem) ->
                            new TableRow().set("source", elem.source).set("quote", elem.quote)))
            .apply(
                BigQueryIO.writeTableRows()
                    .to(tableSpecname)
                    .withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_NEVER)
                    .withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_APPEND));

Мне нужно заменить код преобразования PCollection в TableRow, так как в некоторых случаях столбцы таблицы могут отличаться, поэтому имена этих жестких столбцов не будут работать.

1 Ответ

0 голосов
/ 31 марта 2020

Вы можете просто добавить шаг ParDo между вводом PCollection и шагом записи BigQuery и добавить класс DoFn, который форматирует данные в TableRow объекты так, как вы хотите.

https://beam.apache.org/documentation/programming-guide/#pardo

...