这里只是做了简单的demo,并未深研
1.编写PolluteSink
1.1 maven创建项目(pom.xml)
org.apache.flume
flume-ng-core
1.6.0
org.apache.flume
flume-ng-configuration
1.6.0
org.apache.flume
flume-ng-sdk
1.6.0
log4j
log4j
1.2.17
org.apache.flume
flume-ng-core
1.6.0
org.apache.camel
camel-support
3.0.0-M2
mysql
mysql-connector-java
6.0.6
org.apache.maven.plugins
maven-compiler-plugin
3.1
1.8
1.8
1.2 自定义sink
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
package com.example.demo1.pollute;
import com.example.demo1.entity.Pollute;
import com.example.demo1.utils.FormatDataUtil;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import org.apache.flume.*;
import org.apache.flume.conf.Configurable;
import org.apache.flume.sink.AbstractSink;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.nio.charset.Charset;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 污染源在线自动监控(监测)系统数据传输标准(国标)
*
* @author chenxiaokang
* @date 2019/10/14 13:53
*/
public class PolluteSink extends AbstractSink implements Configurable {
private Logger LOG = LoggerFactory.getLogger(PolluteSink.class);
private String tableName;
private String user;
private String password;
private String hostname;
private String port;
private Connection conn;
private String databaseName;
private PreparedStatement preparedStatement;
@Override
public void configure(Context context) {
databaseName = context.getString("databaseName");
Preconditions.checkNotNull(databaseName, "databaseName must be set!!");
tableName = context.getString("tableName");
Preconditions.checkNotNull(tableName, "tableName must be set!!");
user = context.getString("user");
Preconditions.checkNotNull(user, "user must be set!!");
password = context.getString("password");
Preconditions.checkNotNull(password, "password must be set!!");
hostname = context.getString("hostname");
Preconditions.checkNotNull(hostname, "host must be set!!");
port = context.getString("port");
Preconditions.checkNotNull(port, "port must be set!!");
}
@Override
public Status process() throws EventDeliveryException {
Status result = Status.READY;
Channel channel = getChannel();
List actions = Lists.newArrayList();
Transaction transaction = null;
try {