对来自配置单元的jdbctemplate结果使用java8流

hfsqlsce  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(275)

我使用jdbctemplate查询配置单元,然后将结果写入.csv文件。我基本上只是生成一个对象列表,然后将该列表蒸汽化,将每条记录写入文件。我会喜欢流的结果,因为他们从Hive回来,并写入文件,而不是等待得到整个事情,然后处理它。有人能给我指一下正确的方向吗?谢谢!

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;
}
fxnxkyjh

fxnxkyjh1#

看起来没有内置的解决方案,但你可以做到。基本上,您将现有功能 Package 在迭代器中,并使用拆分器将其转换为流。以下是一篇关于这个主题的博文:
代码实现了spring的resultsetextractor接口,它是一个单一的抽象方法(sam)接口,允许使用lambda表达式来实现它。
该实现将sql结果集 Package 在迭代器中,使用spliterators和streamsupport实用程序类构造流,并将其应用于获取行集流并返回泛型结果的函数。

相关问题