在上一篇 Flume采集数据到Kafka 中,日志采集到了Kafka,接下来要使用Spark Streaming,根据不同需求来统计数据。
开发时先在windows的idea上测试,那如何在windows上构建spark开发的环境,可以参考我的这篇文章 IDEA首次配置maven开发spark详细步骤。项目中需要的依赖可参考我的github中的pom.xml文件。
一、使用Kafka消费者API
这里要注意Kafka的版本,使用老版本的API和新版本的API不相同。这里使用的是新版本的API,在新版本(kafka-0-10)中,取消了Receiver模式,只有Direct模式了。
Spark使用Kafka消费者API的核心代码如下
val topic = config.getString("kafka.topic").split(",")
val kafkaParams = Map[String,Object](
"bootstrap.servers" -> brokers,
"key.deserializer" -> classOf[StringDeserializer],
"value.deserializer" -> classOf[StringDeserializer],
"group.id" -> groupId,
"auto.offset.reset" -> "latest",
"enable.auto.commit" -> (false:java.lang.Boolean)
)
val messages = KafkaUtils.createDirectStream(ssc,
LocationStrategies.PreferConsistent,
ConsumerStrategies.Subscribe[String,String](topic,kafkaParams))
// x.value获得数据里的值
val logs = messages.map(x => x.value())
二、清洗数据
原来的数据格式是这样的
23.198.48.147 2019-11-26 17:28:01