Hive 在配置单元的JDBCTemplate结果上使用Java8流

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>

我正在使用jdbcTemplate查询配置单元,然后将结果写入.csv文件。我基本上只是生成一个对象列表,然后将该列表蒸汽化,将每条记录写入文件。 我希望在它们从配置单元返回时流式传输结果,并将其写入文件,而不是等待获取整个结果,然后再对其进行处理。有人能给我指一下正确的方向吗?谢谢

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实用程序类构造流,并将其应用于获取行集流并返回一般结果的函数