Hive 在配置单元的JDBCTemplate结果上使用Java8流
我正在使用jdbcTemplate查询配置单元,然后将结果写入.csv文件。我基本上只是生成一个对象列表,然后将该列表蒸汽化,将每条记录写入文件。 我希望在它们从配置单元返回时流式传输结果,并将其写入文件,而不是等待获取整个结果,然后再对其进行处理。有人能给我指一下正确的方向吗?谢谢Hive 在配置单元的JDBCTemplate结果上使用Java8流,hive,java-stream,jdbctemplate,Hive,Java Stream,Jdbctemplate,我正在使用jdbcTemplate查询配置单元,然后将结果写入.csv文件。我基本上只是生成一个对象列表,然后将该列表蒸汽化,将每条记录写入文件。 我希望在它们从配置单元返回时流式传输结果,并将其写入文件,而不是等待获取整个结果,然后再对其进行处理。有人能给我指一下正确的方向吗?谢谢 private List<Avs> queryAvsData(String asSql) { List<Avs> llistAvs = new ArrayList<Avs>
private List<Avs> queryAvsData(String asSql) {
List<Avs> llistAvs = new ArrayList<Avs>();
List<Map<String, Object>> rows = hiveJdbcTemplate.queryForList(asSql);
Iterator<Map<String, Object>> it = rows.iterator();
while (it.hasNext()) {
Map<String, Object> row = it.next();
Avs laAvs = Avs.builder()
.make((String) row.get("make"))
.model((String) row.get("model"))
.build();
llistAvs.add(laAvs);
}
return llistAvs;
}
private List queryAvsData(字符串asSql){
List llistAvs=new ArrayList();
列表行=hiveJdbcTemplate.queryForList(asSql);
Iterator it=rows.Iterator();
while(it.hasNext()){
Map row=it.next();
Avs laAvs=Avs.builder()
.make((字符串)行.get(“make”))
.model((字符串)行.get(“model”))
.build();
LISTAVS.add(laAvs);
}
返回塔夫;
}
看起来没有内置的解决方案,但您可以做到。基本上,将现有功能包装在迭代器中,并使用拆分器将其转换为流
代码实现了Spring的ResultSetTextRactor接口,这是一个单一抽象方法(SAM)接口,允许使用lambda表达式来实现它
该实现将SQL结果集包装在迭代器中,使用拆分器和StreamSupport实用程序类构造流,并将其应用于获取行集流并返回一般结果的函数
看起来没有内置的解决方案,但你可以做到。基本上,将现有功能包装在迭代器中,并使用拆分器将其转换为流 代码实现了Spring的ResultSetTextRactor接口,这是一个单一抽象方法(SAM)接口,允许使用lambda表达式来实现它 该实现将SQL结果集包装在迭代器中,使用拆分器和StreamSupport实用程序类构造流,并将其应用于获取行集流并返回一般结果的函数