kafka-stream数据清洗
1、数据清洗业务类LogProcessor
package com.css.kafka.kafka_stream; import org.apache.kafka.streams.processor.Processor;
import org.apache.kafka.streams.processor.ProcessorContext; /**
* 数据清洗*/
public class LogProcessor implements Processor<byte[], byte[]>{ private ProcessorContext context; //初始化
public void init(ProcessorContext context) {
//传输
this.context = context;
} //具体业务逻辑
public void process(byte[] key, byte[] value) {
//1.拿到消息数据,转成字符串
String message = new String(value); //2.如果包含- 去除
if (message.contains("-")) {
//3.把- 去掉 之后去掉左侧数据
message = message.split("-")[1];
}
//4.发送数据
context.forward(key, message.getBytes());
} //释放资源
public void close() {
}
}
2、Application类
package com.css.kafka.kafka_stream; import java.util.Properties; import org.apache.kafka.streams.KafkaStreams;
import org.apache.kafka.streams.StreamsConfig;
import org.apache.kafka.streams.Topology;
import org.apache.kafka.streams.processor.Processor;
import org.apache.kafka.streams.processor.ProcessorSupplier; /**
* 需求:对数据进行清洗操作
*
* 思路:wo-henshuai 把-和wo清洗掉*/
public class Application { public static void main(String[] args) {
//1.定义主题 发送到 另外一个主题中 数据清洗
String oneTopic = "t1";
String twoTopic = "t2"; //2.设置属性
Properties prop = new Properties();
prop.put(StreamsConfig.APPLICATION_ID_CONFIG, "logProcessor");
prop.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "192.168.146.132:9092,192.168.146.133:9092,192.168.146.134:9092"); //3.实例对象
StreamsConfig config = new StreamsConfig(prop); //4.流计算 拓扑
Topology builder = new Topology(); //5.定义kafka组件数据源
builder.addSource("Source", oneTopic).addProcessor("Processor", new ProcessorSupplier<byte[], byte[]>() { public Processor<byte[], byte[]> get() {
return new LogProcessor();
}
//从哪里来
}, "Source")
//到哪里去
.addSink("Sink", twoTopic, "Processor"); //6.实例化kafkaStream
KafkaStreams kafkaStreams = new KafkaStreams(builder, prop);
kafkaStreams.start();
}
}
3、运行Application类的main方法
4、在hd09-1机器上创建主题t1
bin/kafka-topics.sh --zookeeper hd09-1:2181 --create --replication-factor 3 --partition 1 --topic t1
5、在hd09-2机器上启动消费者
bin/kafka-console-consumer.sh --bootstrap-server hd09-2:9092 --topic t2 --from-beginning --consumer.config config/consumer.properties
6、在hd09-1机器上启动生产者
bin/kafka-console-producer.sh --broker-list hd09-1:9092 --topic t1
7、此时在hd09-1机器kafka生产者上输入 wo-henshuai,在hd09-2消费者机器上会显示henshuai,即完成了数据清洗,如下图。


kafka-stream数据清洗的更多相关文章
- 告别Kafka Stream,让轻量级流处理更加简单
一说到数据孤岛,所有技术人都不陌生.在 IT 发展过程中,企业不可避免地搭建了各种业务系统,这些系统独立运行且所产生的数据彼此独立封闭,使得企业难以实现数据共享和融合,并形成了"数据孤岛&q ...
- 《Kafka Stream》调研:一种轻量级流计算模式
原文链接:https://yq.aliyun.com/articles/58382 摘要: 流计算,已经有Storm.Spark,Samza,包括最近新起的Flink,Kafka为什么再自己做一套流计 ...
- 流式处理的新贵 Kafka Stream - Kafka设计解析(七)
原创文章,转载请务必将下面这段话置于文章开头处. 本文转发自技术世界,原文链接 http://www.jasongj.com/kafka/kafka_stream/ Kafka Stream背景 Ka ...
- Kafka设计解析(七)- Kafka Stream
本文介绍了Kafka Stream的背景,如Kafka Stream是什么,什么是流式计算,以及为什么要有Kafka Stream.接着介绍了Kafka Stream的整体架构,并行模型,状态存储,以 ...
- Kafka Stream
Kafka Stream是Apache Kafka从0.10版本引入的一个新Feature(当前:1.0.0-rc0,参见:https://github.com/apache/kafka/releas ...
- Kafka设计解析(七)Kafka Stream
转载自 技术世界,原文链接 Kafka设计解析(七)- Kafka Stream 本文介绍了Kafka Stream的背景,如Kafka Stream是什么,什么是流式计算,以及为什么要有Kafka ...
- 流式计算新贵Kafka Stream设计详解--转
原文地址:https://mp.weixin.qq.com/s?__biz=MzA5NzkxMzg1Nw==&mid=2653162822&idx=1&sn=8c4611436 ...
- kafka stream 低级别的Processor API动态生成拓扑图
public class KafkaSream { public static void main(String[] args) { Map<String, Object> props = ...
- 流式计算(二)-Kafka Stream
前面说了Java8的流,这里还说流处理,既然是流,比如水流车流,肯定得有流的源头,源可以有多种,可以自建,也可以从应用端获取,今天就拿非常经典的Kafka做源头来说事,比如要来一套应用日志实时分析框架 ...
- kafka(五) 流式处理 kafka stream
参考文档: http://www.infoq.com/cn/articles/kafka-analysis-part-7?utm_source=infoq&utm_campaign=user_ ...
随机推荐
- [转]JavaScript放在<head>和<body>的区别
原文:http://liminhappygirl.iteye.com/blog/1841360 javaScript放在<head>和<body>的区别: 在HTML body ...
- SSL的单向认证和双向认证
原文地址:http://alvinhu.com/blog/2013/06/20/one-way-and-two-way-ssl-authentication/?utm_source=tuicool&a ...
- lua字符串对齐函数
最近要用到字符串对齐,开始只是一部分字符串,就直接加空格了,后来发现有很多, 于是写了个字符串对齐的函数. --功能:分割字符串 --参数:带分割字符串,分隔符 --返回:字符串表 function ...
- lua自用的函数收集
这里记录一下我常用到的一些lua函数,不定期更新. 1.cirleAdd函数是用来一个循环自增的,其中num是最大值, startNum是起始值,stepNum是步长,startFlag默认真起始值从 ...
- 1.svn+apache整合
1:安装svn客户端, 并且在客户端下,能建立仓库,在自己的硬盘上,建一个库利用 file:///D:/xx/yy来管理自己的仓库. 2:把svn与apache整合. 2.1为什么与apache一起整 ...
- Maple重点知识总结
Maple中的evalf与evalhf evalf 可作用于单值 可作用于List 可作用于Set 可作用于Vector(<..>) 可作用于Matrix(<..|..|..> ...
- easy UI动态赋值
1,首先怎么清除这个值 $('#filegrid').datagrid('loadData', { total: 0, rows: [] }); 2,清除后,通过post提交请求,怎么将新植穿进去,这 ...
- 利用U盘给Intel NUC安装CentOS
一,UltraISO(用来制作 U 盘启动) 需要新版9.6 下载地址为:http://www.onlinedown.net/soft/614.htm 软件注册码:王涛 7C81-1689-4046- ...
- 漫游kafka实战篇之搭建Kafka开发环境(3)
上篇文章中我们搭建了kafka的服务器,并可以使用Kafka的命令行工具创建topic,发送和接收消息.下面我们来搭建kafka的开发环境. 添加依赖 搭建开发环境需要引入kafka的jar包 ...
- matlab获取图片的size属性,长宽
width=size(imread(‘文件名'),2): %获取图像宽length=size(imread(‘文件名'),1): %获取图像长 g=imread(['D:\文件及下载相关\桌面\代码 ...