大数据全系列 教程
1869个小节阅读:467.8k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
/**
* 主题
*/
public enum TopicNameEnum {
HAI_KOU_ORDER_TOPIC("hai_kou_order_topic","海口市订单主题"),
cheng_du_ORDER_TOPIC("cheng_du_order_topic","成都市订单主题"),
xi_an_ORDER_TOPIC("xi_an_order_topic","xian市订单主题");
private String name;
private String desc;
TopicNameEnum(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getDesc() {
return desc;
}
public String getName() {
return name;
}
}
xxxxxxxxxx
// 1、sparkconf 使用本地模式运行 * 内部会自动计算cpu核数
val conf = new SparkConf().setMaster("local[*]").setAppName("sparkstreamingkafa")
// 2、创建steamingContext
val sc = new StreamingContext(conf, Seconds(1))
xxxxxxxxxx
// 3、kafka配置
val kafkaParams = Map[String, Object](
// 指定broker地址清单
"bootstrap.servers" -> "node2:9092,node3:9092,node4:9092",
/*键的序列化器*/
"key.deserializer" -> classOf[StringDeserializer],
/*值的序列化器*/
"value.deserializer" -> classOf[StringDeserializer],
/*消费者所在分组的 ID*/
"group.id" -> "test0002",
/**
* 改属性指定消费者在读取一个没有偏移量的分区或者偏移量无效的情况下怎么处理
* latest: 在偏移量无效的情况下, 消费者从最新的记录开始读取数据
* earliest: 在偏移量无效的情况下, 消费者从起始位置开始读取分区记录
*/
"auto.offset.reset" -> "latest",
/*是否自动提交*/
"enable.auto.commit" -> (false: java.lang.Boolean)
)
//4、 指定topic
val topics = Array(
TopicNameEnum.HAIKOU_ORDER_TOPIC.getName,//海口
TopicNameEnum.SHAGNHAI_ORDER_TOPIC.getName,// 上海
TopicNameEnum.XIAN_ORDER_TOPIC.getName // 西安
)
//5、 直接方式获取kafka分区数据。 从每个分区直接读取数据大大提供并行能力
val stream:InputDStream[ConsumerRecord[String,String]] = KafkaUtils.createDirectStream[String, String](
sc,
//位置策略
PreferConsistent,
// 订阅主题
Subscribe[String,String](topics,kafkaParams)
)
xxxxxxxxxx
./kafka-topics.sh --create --bootstrap-server node2:9092,node3:9092,node4:9092 --replication-factor 3 partitions 3 --topic haikou_order_topic