一、自定义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(); } } }