作为Apache Beam编程模型的初学者,我想知道JDBC
和jdbcio
之间的区别。我开发了一个简单的数据流,该数据流涉及正常的JDBC
连接,并且按预期运行。
是否必须在jdbcio
上使用JDBC
?如果是,那么使用普通的JDBC
代码会遇到什么问题?
答案 0 :(得分:1)
在Beam管道中,有用于读取和写入外部数据源的各种选项。最常见的方法是利用Beam社区构建的内置接收器和源(内置I / O转换)。这些连接器通常会花费大量的开发精力在它们上面,并且已经过生产硬化。例如,BigQueryIO在生产中已经使用了很多年,并且在此期间一直在不断发展。因此,一般建议是尽可能使用标准的水槽和水源。
但是,并非所有与外部数据源的交互都应该通过Sources和Sinks进行,在某些情况下,从DoFn到外部源的手动通信是正确的路径。下面是一些示例(当然还有更多!);
其他注释/提示:
在调用外部系统时,请记住,Apache Beam旨在将工作分配到多个线程中,这会给您的外部数据源带来很大的负担,您通常可以通过使用start&end bundle批注来减轻这种负担。
Java(SDK 2.9.0)
Python(SDK 2.9.0)