我正在使用 JDBC 处理一些数据,其中我使用 gemfireXD 作为 DB,这是一个 InMemory 数据网格和一个 NewSQL 解决方案。
Step1 - 我从表(Table1)中获取所有不同的键(field1)
Statement stmt = conn.createStatement();
stmt.execute("select distinct field1 from Table1");
ResultSet rs = stmt.getResultSet();
List<String> keyList = new ArrayList<String> ();
while (rs.next()) {
keyList.add(rs.getString("field1"));
}
Step2 - 我正在为上面列表中的每个键查询同一个表。这应该为每个键返回 2 条记录。
我需要为每个键处理这 2 条记录,并从这 2 行中为该键创建一个最终处理的记录,最终需要将其存储在一个单独的表 (table2) 中。
for (int i = 0; i< fieldList.size(); i++) {
stmt.execute("select * from Table1 where field1=" + keyList.get(i));
ResultSet rs = stmt.getResultSet();
// the resultset should contain 2(or more) rows for the key which need to be processed based on some logic.
// Finally need to create 1 processed record for the given key.
// Insert the processed record to Table2
}
由于我在Table1中有数百万条记录,上述处理数据的方式非常耗时。
我需要并行化 gemfireXD 中的处理。
我可以使用 PIG 或 SPARK 的并行处理功能(创建元组/记录袋和使用 MR 编程)在几个小时内在 PIG 或 SPARK 中进行相同的处理。
我希望 gemfireXD 必须有一些工具来并行处理数据,虽然我已经在 gemfireXD 中尝试过 DATAAWARE 过程并用它来并行化过程调用,但它对我不起作用。
我希望 gemfire XD 必须为此目的采用其他方法
有人可以建议 gemfireXD 中的任何实现方法来达到预期的结果吗?