【问题标题】:What are schemas for in Apache Beam?Apache Beam 中的模式是什么?
【发布时间】:2020-10-06 07:49:40
【问题描述】:

我在 Apache BEAM 中阅读有关 SCHEMAS 的文档,但我不明白它的目的是什么,我应该如何以及为什么或在什么情况下需要使用它们。使用模式和使用扩展 Serializable 接口的类有什么区别?

文档有一个例子:

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

但它没有解释readTransactionsAsPojo 函数是如何构建的。我认为对此有很多缺失的解释。

【问题讨论】:

  • 是的。在实现 Doc 中提到的架构后,我试图使用 JdbcIO 进行读取,但显然我们必须通过 RowMapper 才能通过 Jdbc 读取。我不明白我们如何在这里使用已经定义的 POJO Schema。

标签: apache-beam dataflow


【解决方案1】:

使用 Beam Schema 有几个原因,其中一些如下:

  • 您无需为具有架构的对象指定 Coder
  • 如果您的对象具有相同的架构,但以不同的方式表示(例如,JavaBeanPojo 在您的示例中),那么 Beam 架构将允许使用相同的架构 PTransforms PCollections 这些对象;
  • 使用 Schema-aware PCollections,编写连接会容易得多,因为它需要的代码样板要少得多;
  • 要在PCollection 上使用 BeamSQL,您需要拥有 Beam 架构。例如,您可以读取带有会自动转换为 Beam Schema 的架构的 Avro 文件,然后对这些 Avro 记录应用 Beam SQL 转换。

另外,我建议您观看 2019 年 Beam 峰会上的 these talk,了解 Schema-aware PCollections 和 Beam SQL。

【讨论】:

    猜你喜欢
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多