Для чего нужны схемы в Apache Beam? - PullRequest
0 голосов
/ 16 июня 2020

Я читал документы о SCHEMAS в Apache BEAM, но я не могу понять, какова его цель, как и почему или в каких случаях мне нужно их использовать. В чем разница между использованием схем или классов, расширяющих интерфейс Serializable?

В документации есть пример:

@DefaultSchema(JavaFieldSchema.class)
public class TransactionPojo {
  public String bank;
  public double purchaseAmount;
}
PCollection<TransactionPojos> transactionPojos = readTransactionsAsPojo();

Но это не объясняет, как readTransactionsAsPojo функция построена. Думаю, по этому поводу у многих отсутствует объяснение.

1 Ответ

0 голосов
/ 18 июня 2020

Есть несколько причин использовать схему луча, некоторые из них приведены ниже:

  • Вам не нужно указывать Coder для объектов со схемой;
  • Если у вас есть объекты с той же схемой, но представлены по-другому (например, JavaBean и Pojo в вашем примере), тогда Beam Schema позволит использовать ту же схему PTransforms для PCollections из них objects;
  • С поддержкой схемы PCollections намного проще писать объединения, поскольку для этого потребуется гораздо меньше шаблонного кода;
  • Чтобы использовать Beam SQL вместо PColection, вам потребуется иметь схему луча. Например, вы можете читать файлы Avro со схемой, которая будет автоматически преобразована в схему Beam, а затем вы примените преобразование Beam SQL к этим записям Avro.

Кроме того, я бы порекомендовал посмотреть этот доклад с Beam Summit 2019 о PCollections с поддержкой схемы и Beam SQL.

...