Получение списка из PCollections - PullRequest
0 голосов
/ 23 июня 2018

Я хочу получить список значений из Pcollection.

PCollection<List<Integer>> lst =    bqT2.apply(ParDo.of(new 
UserId()));  // line 1
List myList = lst.getAll(); // line 2 

но функции getAll () нет

Я нашел что-то похожее

    List<String> dummylist = Arrays.asList(dummy);
    DoFnTester<String,String> fnTester = DoFnTester.of(new AAA(mapview));
    fnTester.setSideInputInGlobalWindow(mapview, csvlist);
    //dummylines.apply(ParDo.of(fnTester));
    List<String> results = fnTester.processBatch(dummylist);

но я не нашел способа использовать функцию «DoFnTester» для получения элементов списка.

Есть ли способ составить список из PCollection?

Просто, чтобы уточнить, у меня есть две PCollections.

PCollection   p1 = pipeline.apply("",
BigQueryIO.read().fromQuery("SELECT * from myTable where userid in " +  lst + ));

Примечание: lst из строки 1

Не уверен, что поток данных Google не поддерживает простые варианты использования.

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

apache_beam.transforms.combiners.ToList может работать для вас, если список помещается в память.

beam.combiners.ToList() - версия Python.

0 голосов
/ 25 июня 2018

Данные не могут быть доступны напрямую из PCollection из-за распределенной природы конвейеров потока данных.

Вместо преобразования в список выполните преобразование «объединить», чтобы преобразовать вашу PCollection из нескольких целых в PCollection, содержащую один элемент списка, необходимый в запросе SQL, прикованный к другому преобразованию с вашим запросом чтения BigQuery с использованием предыдущего набора PCollection. (список целых чисел).

...