java向kafka推送数据_kafka数据发送与接收实现-java

根据图识,项目将分为三个部分。整个项目基本思路是如何通过爬虫爬取大量数据放到Hbase,然后通过ETL工具初步转化筛选将数据存到mongodb,抽取mongodb的数据进行清洗处理算出模型放到hdfs。后续进来数据通过模型运算出数据的类型。项目系统主要包括前端+后端+机器学习,前端采用React Native,Native,后端采用Dubbo+Spring+java,机器学习采用Spark进行实现,本项目机器学习-spark代码运行在mesos上。

本课程我们只针对以上图示的浅蓝色部分内容(即与机器学习相关的内容),通过用真实的智能客户项目系统作为案例(案例附带源码,可以直接做二次开发),主要根据项目实例穿讲机器学习以及相关知识,包括有:数据提取,数据清洗以及分词,数据特征值提取、机器学习模型计算、数据分类等等,进行详细讲解。

本课程所需掌握的技术:java、scala、IK、Hdfs、Spark ml、Spark Streaming、Spark SQL、Kafka、Zookeeper、Mongodb、Spring-Data-Mongodb,由于每个技术需要掌握的程度不一样,对于我们用到的一些开源技术,课程中将会是简单介绍如何使用,不会着重讲解。课程重点讲解spark ml、spark Streaming,以及如何使用这些技术进行项目的实战,贯穿项目系统并且最后串联所有技术。spark基于2.0.1版本讲解

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要在Spring Boot应用程序中使用Spring Webflux框架来实现基于HTTP/1.1的长连接,这可以通过以下代码示例实现: ```java @Configuration public class WebConfig { @Bean public HandlerMapping handlerMapping() { SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping(); mapping.setOrder(Ordered.HIGHEST_PRECEDENCE); mapping.setUrlMap(Collections.singletonMap("/data", dataHandler())); return mapping; } @Bean public WebSocketHandlerAdapter handlerAdapter() { return new WebSocketHandlerAdapter(); } @Bean public WebSocketHandler dataHandler() { return new WebSocketHandler() { private FluxProcessor<String, String> processor = DirectProcessor.create(); @Override public Mono<Void> handle(WebSocketSession session) { session.receive() .map(WebSocketMessage::getPayloadAsText) .subscribe(processor::onNext, processor::onError, processor::onComplete); return session.send(processor.map(session::textMessage)); } }; } } ``` 在上面的代码中,我们定义了一个名为"data"的URL路径,并指定了一个WebSocketHandler实例来处理此路径的请求。在WebSocketHandler实现中,我们使用了Spring Webflux框架提供的FluxProcessor来处理接收到的消息,并将其转发到Kafka。 接下来,你需要编写一个Kafka生产者来将数据发送Kafka。以下是一个简单的Kafka生产者实现: ```java @Component public class KafkaProducer { @Value("${spring.kafka.bootstrap-servers}") private String bootstrapServers; private KafkaTemplate<String, String> kafkaTemplate; @PostConstruct public void init() { Map<String, Object> configs = new HashMap<>(); configs.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); configs.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class); configs.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class); kafkaTemplate = new KafkaTemplate<>(new DefaultKafkaProducerFactory<>(configs)); } public void send(String topic, String message) { kafkaTemplate.send(topic, message); } } ``` 在上面的代码中,我们使用了Spring Kafka提供的KafkaTemplate来发送数据Kafka,你需要在应用程序的配置文件中定义Kafka的连接信息,例如: ``` spring.kafka.bootstrap-servers=localhost:9092 ``` 最后,你可以在WebSocketHandler实现中将接收到的数据发送Kafka,例如: ```java @Component public class DataHandler implements WebSocketHandler { private KafkaProducer kafkaProducer; public DataHandler(KafkaProducer kafkaProducer) { this.kafkaProducer = kafkaProducer; } @Override public Mono<Void> handle(WebSocketSession webSocketSession) { return webSocketSession.receive() .map(WebSocketMessage::getPayloadAsText) .doOnNext(message -> kafkaProducer.send("data", message)) .then(); } } ``` 在上面的代码中,我们注入了之前编写的KafkaProducer实例,并在接收数据时使用它将数据发送Kafka的"data"主题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值