Обновить строку BigTable в Apache Beam (Scio)

У меня есть следующий вариант использования:

Есть тема PubSub с данными, которые я хочу агрегировать с помощью Scio, а затем сохранить эти агрегаты в BigTable.

В моем конвейере есть агрегирование CountByKey. Я хотел бы иметь возможность увеличивать значение в BigTable для заданного ключа, желательно с помощью ReadModifyWrite. В scio-examples есть только обновления, связанные с установкой значений столбцов, но нет ни одного использования атомарного приращения.

Я понимаю, что мне нужно создать Mutation для выполнения любой операции с BigTable, например:

Mutations.newSetCell(
      FAMILY_NAME, COLUMN_QUALIFIER, ByteString.copyFromUtf8(value.toString), 0L)

Как создать мутацию UPDATE из преобразования Scio / Apache Beam для атомарного обновления строки в BigTable?


person Marcin Zablocki    schedule 16.07.2018    source источник


Ответы (1)


Я не вижу ничего похожего на ReadModifyWrite в com.google.bigtable.v2.Mutation API, поэтому не уверен, возможно ли это. Я вижу 2 возможных обходных пути:

  • сохранять события как тему Pubsub, использовать их из серверной службы и увеличивать там
  • используйте необработанный клиент Bigtable в пользовательском DoFn, см. _ 4_ для вдохновения.
person Neville Li    schedule 21.09.2018