使用pyspark中的structruedStreaming和kafka整合,错误比较多,解决了大量的兼容问题,全文亲测可用。
一、官网
Apache Kafka 是目前最流行的一个分布式的实时流消息系统,给下游订阅消费系统提供了并行处理和可靠容错机制
现在大公司在流式数据的处理场景,Kafka基本是标配。
Structured streaminq能够很好的集成Kafka,从Kafka拉取消息,然后就可以把流数据看做一个DataFrame,一张无限增长的大表,在这个大表上做查询,Structured Streaming保证了端到端的exactly-once,用户只需要关心业务即可,不用费心去关心底层是怎么做的Structuredstreaming既可以从Kafka读取数据,还可以向Kafka写入数据.
读取数据:kafkaSource
二、实操案例
1、实时ETL
package com.bigdata.moni;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class StationLog {
private String stationId;
private String callOut;
private String callIn;
private String callStatus;
private long callTime;
private int duration;
}
package com.bigdata.moni;
import lombok.val;
import org.apache.kafka.clients.producer.*;
import java.util.List;
import java.util.Properties;
import java.util.Random;
public class SendStationLogProducer {
public static void main(String[] args) throws InterruptedException {
Properties properties = new Properties();
// 这个里面肯定有给哪个服务器哪个topic发消息
// 设置连接kafka集群的ip和端口
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"bigdata01:9092");
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,