java - 如何在 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));
}
})
);
解决方案
要使用其他依赖 jar,您可以在运行 Beam Java 管道时简单地将此类 jar 添加到 CLASSPATH 中。CLASSPATH 中的所有 jar 都应该由 Beam runner 上演。
您还可以使用此PipelineOption 来指定依赖项。
推荐阅读
- javascript - JS:文本文件到 JSON
- c# - EmguCV Out of memory exception in x86 release mode only-Sharpening Images
- c# - VS Debugger 将 foreach 循环中的当前值显示为 null,而它不是
- javascript - setValue 不是 EelementRef 的属性
- react-native - 哪个 react-native 版本支持所有 npms?
- visual-studio-cordova - VS Tools for Cordova 覆盖 Android 图标
- mongodb - Mongo DB 或任何 nosql DB(Hbase、Cassandra)如何比传统的 RDBMS 具有可扩展性和优势?
- php - 使用 Laravel 的 Eloquent 构建查询
- c++ - 从指针基抽象类调用非虚拟子类方法
- java - JCIFS SMB 库 - 尝试列出域 (.listFiles) 时出错