一、自定义MySink例子,将十四章节输出到mysql库里

核心类:

        DataStreamSource<String> source = KafkaUtil.kafkaSource(args[0], args[1], args[2]);
        SingleOutputStreamOperator<Acitivity>  oper = source.map(new ActivityMapFunc());
        SingleOutputStreamOperator<Acitivity> summed1 = oper.keyBy("uid", "activetyId").sum("count");
        
        summed1.addSink(new MysqlSink());
        KafkaUtil.getStreamExecutionEnvironment().execute("QueryRelaDb");

MysqlSink:

public class MysqlSink extends RichSinkFunction<Acitivity>{
    private static final long serialVersionUID = 8663244572349286678L;
    private transient Connection conn = null;
    
    @Override
    public void open(Configuration parameters) throws Exception {
        conn = DriverManager.getConnection("xxxx", "xdsu", "123456");
    }
    
    @Override
    public void invoke(Acitivity value,Context context)
            throws Exception {
        PreparedStatement state = conn.prepareStatement("insert into t_activitycount(uid,activetyId,counts)"
                + " values(?, ?, ?) on duplicate key update counts = ?");
        state.setString(1, value.getUid());
        state.setLong(2, value.getActivetyId());
        state.setInt(3, value.count);
        state.setInt(4, value.count);
        
        state.executeUpdate();
        state.close();
    }

    @Override
    public void close() throws Exception {
        if(conn != null) {
            conn.close();
        }
    }
}