我正在使用 Spring Cloud Data Flow 创建自定义流以将数据加载到雪花中。我编写了一个自定义接收器,以使用 Snowflake 的 JDBC 驱动程序将数据加载到 Snowflake 中。我使用的方法类似于使用以下步骤的任何数据库更新:
- 创建连接池(使用 HikariCP)获取 Snowflake 数据库连接。
- 使用准备好的语句,创建了一批行以一次全部提交。
- 使用预定的计时器将批次提交给雪花。
这是当我注意到批次在 Snowflake 中的更新非常缓慢 - 即一次一个或两个记录,并且一批 8K 行在 Snowflake 表中花费了超过 45 分钟的时间来更新(使用 XS 仓库)。
我的问题:是否有更好/另一种/推荐的方法将数据流式传输到雪花中?我知道 Kafka 连接到 Snowflake 和 Snowpipes(它们使用内部/外部阶段),但这些不是我们想要追求的选项。
PreparedStatement preparedStatement = null;
Connection conn = null;
String compiledQuery = "INSERT INTO " + env.getProperty("snowtable") + " SELECT parse_json (column1) FROM VALUES (?)";
conn = DataSource.getConnection();
preparedStatement = conn.prepareStatement(compiledQuery);
for(int i = 0; i<messageslocal.size(); i++) {
preparedStatement.setString(1, messageslocal.get(i));
preparedStatement.addBatch();
}
preparedStatement.executeBatch();
谢谢!