需求:给定topic,获取某个时间段某些过滤条件下的数据。
思路:1)获取分区和offset,通过命令查询,类似kafka-console-consumer --bootstrap-server 127.0.0.1:9092 --topic test_topic --partition 1 --offset 255129 | grep "test";
2)将topic接入elk,通过kibana可视化查询或es接口调用查询;
3)代码实现。
我这里通过方式3实现的,输入topic、起止时间、过滤内容,将查询的数据写入文件中,便于后续分析。如果有更好的办法,欢迎留言交流。
代码实现:
1)pom.xml
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<kafka.version>1.0.1</kafka.version>
<main.class>com.example.KafkaConsumerByTime</main.class>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
<version>${kafka.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>