Flink Source 的几种方案

Flink Source 简介

 

Flink 获取执行环境之后,就可以运行FLink 处理数据了,但是在对数据进行处理之前需要将数据读进来,有数据,才能处理数据。Flink 可以通过各种途径获取数据,然后通过API构建 DataStream 对数据进行一列列处理。今天我们总结一下 Flink 读取数据的集中方式。

准备工作

构建一个POJO,三个字段 user url timestamp 记录了一个用户带点击网页的事件,代码如下 

import java.sql.Timestamp;

/**
 * 用户点击事件
 */
public class Event {
    public String user;
    public String url;
    public Long timestamp;

    public Event() {
    }

    public Event(String user, String url, Long timestamp) {
        this.user = user;
        this.url = url;
        this.timestamp = timestamp;
    }

    @Override
    public String toString() {
        return "Event{" + "user='" + user + '\'' + ", url='" + url + '\'' + ", timestamp=" + new Timestamp(timestamp) + '}';
    }
}

main 方法获取上下文环境

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

创建一个名为 clinks.txt ,存放一些简单的点击事件

令狐冲,./home,1000
依琳,./cart,2000
任盈盈,./pro?id=1001,3000
令狐冲,./home,4000
依琳,./pro?id=0003,5000
令狐冲,./pro?id=1021,6000
任盈盈,./cart,7000
令狐冲,./cart,8000
依琳,./caty,9000

接下来我们来看下Flink 常用的几种读取数据的方式

1、直接从文件中读取数据

在已有 执行环境的前提下,可以通过readTextFile 读取数据文件

        DataStreamSource<String> streamDS = env.readTextFile("input/clicks.txt");
        //文件读取数据
        streamDS.print("从文件读取数据--");
        env.execute();

  说明:

  1. 参数可以是目录,也可以是文件;
  2. 路径可以是相对路径,也可以是绝对路径;
  3. 相对路径是从系统属性user.dir获取路径: idea下是project的根目录, standalone模式下是集群节点根目录;
  4. 也可以从hdfs目录下读取, 使用路径hdfs://..., 由于Flink没有提供hadoop相关依赖, 需要pom中添加相关依赖

如果需要读取 hdfs 文件,需要引入以下依赖

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.7.2</version>
            <scope>provided</scope>
        </dependency>

2、从集合中会读取数据

最简单的读取数据的方式,就是在代码中直接创建一个Java集合,然后调用执行环境的fromCollection方法进行读取。这相当于将数据临时存储到内存中,形成特殊的数据结构后,作为数据源使用,一般用于测试。

       ArrayList<Integer> nums = new ArrayList();
        //nums 添加2个数字
        nums.add(2);
        nums.add(5);
        DataStreamSource<Integer> numsStream = env.fromCollection(nums);//读取 nums 集合数据
        ArrayList<Event> events = new ArrayList();
        events.add(new Event("令狐冲", "./cart", 1000L));
        events.add(new Event("依琳", "./home", 2000L));
        DataStreamSource<Event> eventDataStreamSource = env.fromCollection(events);//读取 events 集合数据*/
        numsStream.print("集合1 数字列表");
        eventDataStreamSource.print("集合2 event");
        env.execute();

 3、从元素中会读取数据

从元素中读取数据和从集合中读取数据一样简单,直接写好元素列表通过上下文环境的 fromElements 方法读取元素列表即可。

        DataStreamSource<Event> elementStream =
                //直接构建对象进行读取数据
                env.fromElements(new Event("令狐冲", "./cart", 1000L),
                        new Event("依琳", "./home", 2000L));
        elementStream.print("从元

 4、从socket 读取数据

不论从集合还是文件,我们读取的其实都是有界数据。在流处理的场景中,数据往往是无界的。这时又从哪里读取呢?一个简单的方式,就是我们之前用到的读取socket文本流。这种方式由于吞吐量小、稳定性较差,一般也是用于测试。

        DataStreamSource<String> socketTextStream = env.socketTextStream("hadoop103", 7777);
        socketTextStream.print("socketTextStream---");
        env.execute();

运行代码之前向在终端上起一下 nc 进程

[hui@hadoop103 ~]$ nc -lk 7777

 5、从Kafka中读取数据

Kafka作为分布式消息传输队列,是一个高吞吐、易于扩展的消息系统。而消息队列的传输方式,恰恰和流处理是完全一致的。所以可以说Kafka和Flink天生一对,是当前处理流式数据的双子星。在如今的实时流处理应用中,由Kafka进行数据的收集和传输,Flink 进行分析计算,这样的架构已经成为众多企业的首选,

 引入依赖

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-connector-kafka_2.11</artifactId>
            <version>${flink.version}</version>
        </dependency>

 

        Properties properties = new Properties();
        properties.setProperty("bootstrap.servers", "hadoop201:9092");
        properties.setProperty("group.id", "consumer-group");
        properties.setProperty("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        properties.setProperty("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        properties.setProperty("auto.offset.reset", "latest");//重置 offset 方法 最近一次
        DataStreamSource<String> kafkaStream =
                env.addSource(new FlinkKafkaConsumer<String>("test", new SimpleStringSchema(), properties));
        kafkaStream.print(”kafka---“);
        env.execute();

服务器启动zk 和 kafka 启动kafka 生产者

[hui@hadoop201 kafka]$ bin/kafka-console-producer.sh --topic test --broker-list hadoop201:9092

启动程序,在生产着窗口发送消息,观察IDEA 控制台输出

自定义 Source

大多数情况下,前面的数据源已经能够满足需要。但是凡事总有例外,如果遇到特殊情况,我们想要读取的数据源来自某个外部系统,而flink既没有预实现的方法、也没有提供连接器,又该怎么办呢?那就只好自定义实现SourceFunction了。接下来我们创建一个自定义的数据源,实现SourceFunction接口。主要重写两个关键方法:run()和cancel()。

run()方法:使用运行时上下文对象(SourceContext)向下游发送数据;

cancel()方法:通过标识位控制退出循环,来达到中断数据源的效果。

代码如下:我们先来自定义一下数据源:

import java.util.Calendar;
import java.util.Random;

public class ClinkSource implements SourceFunction<Event> {
    //声明一个标志位
    private boolean runFlag = true;

    @Override
    public void run(SourceContext<Event> ctx) throws Exception {
        //顶一个随机数
        Random random = new Random();
        //选举范围数据集
        String users[] = {"令狐冲", "依琳", "宁中则", "任盈盈", "岳灵珊"};
        String urls[] = {"./home", "./cret", "./pro?id=21", "./fav"};

        //循环不停的生成数据
        while (runFlag) {
            String user = users[random.nextInt(users.length)];
            String url = urls[random.nextInt(urls.length)];
            Long timeStamp = Calendar.getInstance().getTimeInMillis();
            ctx.collect(new Event(user, url, timeStamp));
            Thread.sleep(1000L);
        }

    }

    @Override
    public void cancel() {
        runFlag = false;
    }
}
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(1);
        DataStreamSource<Event> enentStream = env.addSource(new ClinkSource());//.setParallelism(12);
        enentStream.print();
        env.execute();

 执行结果

E:\Tools\work_tools\jdk1.8\bin\java.exe "-javaagent:D:\tool\IntelliJ IDEA 2020.1\lib\idea_rt.jar=64796:D:\tool\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath E:\Tools\work_tools\jdk1.8\jre\lib\charsets.jar;E:\Tools\work_tools\jdk1.8\jre\lib\deploy.jar;E:\Tools\work_tools\jdk1.8\jre\lib\ext\access-bridge-64.jar;E:\Tools\work_tools\jdk1.8\jre\lib\ext\cldrdata.jar;E:\Tools\work_tools\jdk1.8\jre\lib\ext\dnsns.jar;E:\Tools\work_tools\jdk1.8\jre\lib\ext\jaccess.jar;E:\Tools\work_tools\jdk1.8\jre\lib\ext\jfxrt.jar;E:\Tools\work_tools\jdk1.8\jre\lib\ext\localedata.jar;E:\Tools\work_tools\jdk1.8\jre\lib\ext\nashorn.jar;E:\Tools\work_tools\jdk1.8\jre\lib\ext\sunec.jar;E:\Tools\work_tools\jdk1.8\jre\lib\ext\sunjce_provider.jar;E:\Tools\work_tools\jdk1.8\jre\lib\ext\sunmscapi.jar;E:\Tools\work_tools\jdk1.8\jre\lib\ext\sunpkcs11.jar;E:\Tools\work_tools\jdk1.8\jre\lib\ext\zipfs.jar;E:\Tools\work_tools\jdk1.8\jre\lib\javaws.jar;E:\Tools\work_tools\jdk1.8\jre\lib\jce.jar;E:\Tools\work_tools\jdk1.8\jre\lib\jfr.jar;E:\Tools\work_tools\jdk1.8\jre\lib\jfxswt.jar;E:\Tools\work_tools\jdk1.8\jre\lib\jsse.jar;E:\Tools\work_tools\jdk1.8\jre\lib\management-agent.jar;E:\Tools\work_tools\jdk1.8\jre\lib\plugin.jar;E:\Tools\work_tools\jdk1.8\jre\lib\resources.jar;E:\Tools\work_tools\jdk1.8\jre\lib\rt.jar;E:\workspace_idea\flink01\target\classes;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-java\1.13.0\flink-java-1.13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-core\1.13.0\flink-core-1.13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-annotations\1.13.0\flink-annotations-1.13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-metrics-core\1.13.0\flink-metrics-core-1.13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-shaded-asm-7\7.1-13.0\flink-shaded-asm-7-7.1-13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\esotericsoftware\kryo\kryo\2.24.0\kryo-2.24.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\esotericsoftware\minlog\minlog\1.2\minlog-1.2.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\objenesis\objenesis\2.1\objenesis-2.1.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\commons\commons-compress\1.20\commons-compress-1.20.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\commons\commons-lang3\3.3.2\commons-lang3-3.3.2.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\commons\commons-math3\3.5\commons-math3-3.5.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\google\code\findbugs\jsr305\1.3.9\jsr305-1.3.9.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\force-shading\1.13.0\force-shading-1.13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-streaming-java_2.12\1.13.0\flink-streaming-java_2.12-1.13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-file-sink-common\1.13.0\flink-file-sink-common-1.13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-runtime_2.12\1.13.0\flink-runtime_2.12-1.13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-queryable-state-client-java\1.13.0\flink-queryable-state-client-java-1.13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-hadoop-fs\1.13.0\flink-hadoop-fs-1.13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\commons-io\commons-io\2.7\commons-io-2.7.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-shaded-netty\4.1.49.Final-13.0\flink-shaded-netty-4.1.49.Final-13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-shaded-jackson\2.12.1-13.0\flink-shaded-jackson-2.12.1-13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-shaded-zookeeper-3\3.4.14-13.0\flink-shaded-zookeeper-3-3.4.14-13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\javassist\javassist\3.24.0-GA\javassist-3.24.0-GA.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\scala-lang\scala-library\2.12.7\scala-library-2.12.7.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\typesafe\akka\akka-actor_2.12\2.5.21\akka-actor_2.12-2.5.21.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\typesafe\config\1.3.3\config-1.3.3.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\scala-lang\modules\scala-java8-compat_2.12\0.8.0\scala-java8-compat_2.12-0.8.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\typesafe\akka\akka-stream_2.12\2.5.21\akka-stream_2.12-2.5.21.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\reactivestreams\reactive-streams\1.0.2\reactive-streams-1.0.2.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\typesafe\ssl-config-core_2.12\0.3.7\ssl-config-core_2.12-0.3.7.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\scala-lang\modules\scala-parser-combinators_2.12\1.1.1\scala-parser-combinators_2.12-1.1.1.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\typesafe\akka\akka-protobuf_2.12\2.5.21\akka-protobuf_2.12-2.5.21.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\typesafe\akka\akka-slf4j_2.12\2.5.21\akka-slf4j_2.12-2.5.21.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\clapper\grizzled-slf4j_2.12\1.3.2\grizzled-slf4j_2.12-1.3.2.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\github\scopt\scopt_2.12\3.5.0\scopt_2.12-3.5.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\xerial\snappy\snappy-java\1.1.8.3\snappy-java-1.1.8.3.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\twitter\chill_2.12\0.7.6\chill_2.12-0.7.6.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\twitter\chill-java\0.7.6\chill-java-0.7.6.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\lz4\lz4-java\1.6.0\lz4-java-1.6.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-shaded-guava\18.0-13.0\flink-shaded-guava-18.0-13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-clients_2.12\1.13.0\flink-clients_2.12-1.13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-optimizer_2.12\1.13.0\flink-optimizer_2.12-1.13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\commons-cli\commons-cli\1.3.1\commons-cli-1.3.1.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-connector-kafka_2.12\1.13.0\flink-connector-kafka_2.12-1.13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\kafka\kafka-clients\2.4.1\kafka-clients-2.4.1.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\github\luben\zstd-jni\1.4.3-1\zstd-jni-1.4.3-1.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-connector-base\1.13.0\flink-connector-base-1.13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\slf4j\slf4j-log4j12\1.7.30\slf4j-log4j12-1.7.30.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\logging\log4j\log4j-to-slf4j\2.14.0\log4j-to-slf4j-2.14.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\logging\log4j\log4j-api\2.14.0\log4j-api-2.14.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\xmlenc\xmlenc\0.52\xmlenc-0.52.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\commons-codec\commons-codec\1.4\commons-codec-1.4.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\commons-net\commons-net\3.1\commons-net-3.1.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\commons-logging\commons-logging\1.1.3\commons-logging-1.1.3.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\commons-configuration\commons-configuration\1.6\commons-configuration-1.6.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\commons-digester\commons-digester\1.8\commons-digester-1.8.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\commons-beanutils\commons-beanutils\1.7.0\commons-beanutils-1.7.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\commons-beanutils\commons-beanutils-core\1.8.0\commons-beanutils-core-1.8.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\codehaus\jackson\jackson-core-asl\1.9.13\jackson-core-asl-1.9.13.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\codehaus\jackson\jackson-mapper-asl\1.9.13\jackson-mapper-asl-1.9.13.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\avro\avro\1.7.4\avro-1.7.4.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\thoughtworks\paranamer\paranamer\2.3\paranamer-2.3.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\google\protobuf\protobuf-java\2.5.0\protobuf-java-2.5.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\zookeeper\zookeeper\3.4.6\zookeeper-3.4.6.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\mortbay\jetty\jetty-util\6.1.26\jetty-util-6.1.26.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\io\netty\netty\3.6.2.Final\netty-3.6.2.Final.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\io\netty\netty-all\4.0.23.Final\netty-all-4.0.23.Final.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\javax\xml\bind\jaxb-api\2.2.2\jaxb-api-2.2.2.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\javax\xml\stream\stax-api\1.0-2\stax-api-1.0-2.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\javax\activation\activation\1.1\activation-1.1.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\javax\servlet\servlet-api\2.5\servlet-api-2.5.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\sun\jersey\jersey-core\1.9\jersey-core-1.9.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-connector-kafka_2.11\1.13.0\flink-connector-kafka_2.11-1.13.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\bahir\flink-connector-redis_2.11\1.0\flink-connector-redis_2.11-1.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-streaming-java_2.11\1.2.0\flink-streaming-java_2.11-1.2.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-runtime_2.11\1.2.0\flink-runtime_2.11-1.2.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-shaded-hadoop2\1.2.0\flink-shaded-hadoop2-1.2.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\tukaani\xz\1.0\xz-1.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\commons-el\commons-el\1.0\commons-el-1.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\jamesmurty\utils\java-xmlbuilder\0.4\java-xmlbuilder-0.4.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\jcraft\jsch\0.1.42\jsch-0.1.42.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\commons-beanutils\commons-beanutils-bean-collections\1.8.3\commons-beanutils-bean-collections-1.8.3.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\commons-daemon\commons-daemon\1.0.13\commons-daemon-1.0.13.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\data-artisans\flakka-actor_2.11\2.3-custom\flakka-actor_2.11-2.3-custom.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\data-artisans\flakka-remote_2.11\2.3-custom\flakka-remote_2.11-2.3-custom.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\uncommons\maths\uncommons-maths\1.2.2a\uncommons-maths-1.2.2a.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\data-artisans\flakka-slf4j_2.11\2.3-custom\flakka-slf4j_2.11-2.3-custom.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\clapper\grizzled-slf4j_2.11\1.0.2\grizzled-slf4j_2.11-1.0.2.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\github\scopt\scopt_2.11\3.2.0\scopt_2.11-3.2.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\fasterxml\jackson\core\jackson-core\2.7.4\jackson-core-2.7.4.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\fasterxml\jackson\core\jackson-databind\2.7.4\jackson-databind-2.7.4.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\fasterxml\jackson\core\jackson-annotations\2.7.0\jackson-annotations-2.7.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\com\twitter\chill_2.11\0.7.4\chill_2.11-0.7.4.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-clients_2.11\1.2.0\flink-clients_2.11-1.2.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\flink\flink-optimizer_2.11\1.2.0\flink-optimizer_2.11-1.2.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\sling\org.apache.sling.commons.json\2.0.6\org.apache.sling.commons.json-2.0.6.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\redis\clients\jedis\2.8.0\jedis-2.8.0.jar;E:\Tools\work_tools\apache-maven-3.3.9\repository\org\apache\commons\commons-pool2\2.3\commons-pool2-2.3.jar org.wdh01.chapter05.SourceCustomTest
Event{user='令狐冲', url='./home', timestamp=2022-03-21 14:31:57.918}
Event{user='宁中则', url='./pro?id=21', timestamp=2022-03-21 14:31:58.92}
Event{user='任盈盈', url='./cret', timestamp=2022-03-21 14:31:59.921}
Event{user='依琳', url='./pro?id=21', timestamp=2022-03-21 14:32:00.923}
Event{user='宁中则', url='./fav', timestamp=2022-03-21 14:32:01.926}
Event{user='依琳', url='./pro?id=21', timestamp=2022-03-21 14:32:02.93}
Event{user='令狐冲', url='./cret', timestamp=2022-03-21 14:32:03.93}
Event{user='任盈盈', url='./pro?id=21', timestamp=2022-03-21 14:32:04.931}
Event{user='任盈盈', url='./fav', timestamp=2022-03-21 14:32:05.933}
Event{user='岳灵珊', url='./pro?id=21', timestamp=2022-03-21 14:32:06.936}
Event{user='依琳', url='./home', timestamp=2022-03-21 14:32:07.937}
Event{user='任盈盈', url='./home', timestamp=2022-03-21 14:32:08.94}

 

posted @ 2022-03-21 14:40  晓枫的春天  阅读(605)  评论(0编辑  收藏  举报