Structured Streaming 继承 ForeachWriter<Row> 处理,在实现方法中是处理每一行数据的,怎么能实现处理一批数据呢


 @Override
    public boolean open(long partitionId, long epochId) {
        //System.out.println("partitionId:"+partitionId+"=== epochId:"+epochId);
        return true;
    }

    @Override
    public void process(Row value) {
        FileWriter fileWriter = null;
        try {
            fileWriter = new FileWriter(path, true);
            fileWriter.write(value.mkString());
            fileWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        FileWriter fileWriter2 = null;
        try {
            fileWriter2 = new FileWriter(path2, true);
            fileWriter2.write(value.mkString());
            fileWriter2.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println(value.mkString());
    }

    @Override
    public void close(Throwable errorOrNull) {
        System.out.println("==========close=============");
    }

需求是我的数据需要进行多分支的处理。ForeachWriter中的process方法可以做到多分支处理。但是只能处理一行数据,所以我想知道有没有办法可以处理一批数据,还可以多分支

用BufferedWriter缓存流,是分批处理的,关闭之前要调用一次flush方法哦。

目前解决方法:在foreachBatch中实现。