首页 > 解决方案 > 如何在 Apache Beam Java SDK 中使用来自 GCS 的自定义 JDBC jar 文件

问题描述

我有一个用例,即从 GCS 读取文件并通过 Apache Beam 将其写入我们自己的数据仓库产品。我们有一个自定义的 JDBC 驱动程序(.jar)来连接仓库,我正在尝试使用 Apache Beam 的 JdbcIO 来执行 ETL 和 maven-pom 来管理依赖关系。有人可以帮助我了解如何在 Apache Beam 中利用这个自定义 jar 文件吗?


p.apply(JdbcIO.<KV<Integer, String>>read()
.withDataSourceConfiguration(JdbcIO.DataSourceConfiguration.create(
"MYDRIVERCLASS", "DATABASE_URL")
.withUsername("username")
.withPassword("password"))
.withQuery("select id,name from Person")
.withCoder(KvCoder.of(BigEndianIntegerCoder.of(), StringUtf8Coder.of()))
.withRowMapper(new JdbcIO.RowMapper<KV<Integer, String>>() {
public KV<Integer, String> mapRow(ResultSet resultSet) throws Exception {
    return KV.of(resultSet.getInt(1), resultSet.getString(2));
}
})
);

标签: javamavenjdbcjarapache-beam

解决方案


要使用其他依赖 jar,您可以在运行 Beam Java 管道时简单地将此类 jar 添加到 CLASSPATH 中。CLASSPATH 中的所有 jar 都应该由 Beam runner 上演。

您还可以使用PipelineOption 来指定依赖项。


推荐阅读