Я решил, используя несколько пардос, в конце концов, спасибо.

тированные файлы JSON можно прочитать в облачном хранилище с помощью Dataflow через:

p.apply("read logfiles", TextIO.Read.from("gs://bucket/*").withCoder(TableRowJsonCoder.of()));

Если я просто хочу записать эти журналы с минимальной фильтрацией в BigQuery, я могу сделать это с помощью DoFn, подобного этому:

private static class Formatter extends DoFn<TableRow,TableRow> {

        @Override
        public void processElement(ProcessContext c) throws Exception {

            // .clone() since input is immutable
            TableRow output = c.element().clone();

            // remove misleading timestamp field
            output.remove("@timestamp");

            // set timestamp field by using the element's timestamp
            output.set("timestamp", c.timestamp().toString());

            c.output(output);
        }
    }
}

Однако я не знаю, как получить доступ к вложенным полям в файле JSON таким образом.

Если TableRow содержитRECORD названныйrвозможно ли получить доступ к его ключам / значениям без дальнейшей сериализации / десериализации?Если мне нужно сериализовать / десериализовать себя сJackson библиотека, имеет ли смысл использовать стандартCoder изTextIO.Read вместоTableRowJsonCoder, чтобы вернуть часть производительности, которую я теряю таким образом?

РЕДАКТИРОВАТЬ

Файлы разделены новой строкой и выглядят примерно так:

{"@timestamp":"2015-x", "message":"bla", "r":{"analyzed":"blub", "query": {"where":"9999"}}}
{"@timestamp":"2015-x", "message":"blub", "r":{"analyzed":"bla", "query": {"where":"1111"}}}

Ответы на вопрос(1)

Ваш ответ на вопрос