作为Apache Beam编程模型的初学者,我想知道JDBC
和jdbcio
之间的区别。我已经开发了一个简单的数据流,涉及正常的JDBC
连接,它正在按预期工作。
是否必须使用jdbcio
而不是JDBC
?如果是的话,当我们使用正常的JDBC
代码时,我们面临的问题是什么?
在Beam管道中,有多种选项可用于读取和写出外部数据源。最常见的方法是使用由Beam社区(内置I / O转换)构建的内置接收器和源。这些连接器通常需要花费大量的开发工作,并且将进行生产加固。例如,BigQueryIO已经在生产中使用了很多年,并在此期间不断发展。因此,一般建议是尽可能使用标准的水槽和水源。
然而,并非所有与外部数据源的交互都应该通过源和接收器,有些用例是从DoFn到外部源的手工建立通信是正确的路径。下面是几个例子(当然还有更多!);
额外说明/提示:
在调用外部系统时,请记住,Apache Beam旨在跨多个线程分配工作,这可能会对外部数据源造成很大负担,您通常可以通过使用开始和结束捆绑注释来减少此负载;
Java(SDK 2.9.0)
Python(SDK 2.9.0)