spark-streaming(二)

DStream创建(kafka数据源)

1.在idea中的 pom.xml 中添加依赖

复制代码
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming-kafka-0-10_2.12</artifactId>
    <version>3.0.0</version>
</dependency>

2.创建一个新的object,并写入以下代码

复制代码
import org.apache.kafka.clients.consumer.ConsumerConfig
import org.apache.kafka.common.serialization.StringDeserializer
import org.apache.spark.SparkConf
import org.apache.spark.streaming.dstream.InputDStream
import org.apache.spark.streaming.kafka010.{ConsumerStrategies, KafkaUtils, LocationStrategies}
import org.apache.spark.streaming.{Seconds, StreamingContext}
import org.apache.kafka.clients.consumer.ConsumerRecord

/**
 * 通过 DirectAPI 0 - 10 消费 Kafka 数据
 * 消费的 offset 保存在 _consumer_offsets 主题中
 */
object DirectAPI {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("direct")
    val ssc = new StreamingContext(sparkConf, Seconds(3))

    // 定义 Kafka 相关参数
    val kafkaPara: Map[String, Object] = Map[String, Object](
      ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG -> "node01:9092,node02:9092,node03:9092",
      ConsumerConfig.GROUP_ID_CONFIG -> "kafka",
      "key.deserializer" -> classOf[StringDeserializer],
      "value.deserializer" -> classOf[StringDeserializer]
    )

    // 通过读取 Kafka 数据,创建 DStream
    val kafkaDStream: InputDStream[ConsumerRecord[String, String]] = KafkaUtils.createDirectStream[String, String](
      ssc,
      LocationStrategies.PreferConsistent,
      ConsumerStrategies.Subscribe[String, String](Set("kafka"), kafkaPara)
    )

    // 提取出数据中的 value 部分
    val valueDStream = kafkaDStream.map(record => record.value())

    // WordCount 计算逻辑
    valueDStream.flatMap(_.split(" "))
      .map((_, 1))
      .reduceByKey(_ + _)
      .print()

    ssc.start()
    ssc.awaitTermination()
  }
}    

3.在虚拟机中,开启kafka、zookeeper、yarn、dfs集群

4.创建一个新的topic---kafka,用于接下来的操作

查看所有的topic(是否创建成功)

开启kafka生产者,用于产生数据

启动idea中的代码,在虚拟机中输入数据

输入后可以在idea中查看到

查看消费进度

相关推荐
辞--忧6 小时前
双十一美妆数据分析:洞察消费趋势与行业秘密
大数据
时序数据说13 小时前
国内时序数据库概览
大数据·数据库·物联网·时序数据库·iotdb
阿Paul果奶ooo15 小时前
Flink中基于时间的合流--双流联结(join)
大数据·flink
花酒锄作田15 小时前
Nginx反向代理Kafka集群
nginx·kafka
数据爬坡ing15 小时前
过程设计工具深度解析-软件工程之详细设计(补充篇)
大数据·数据结构·算法·apache·软件工程·软件构建·设计语言
计算机源码社17 小时前
分享一个基于Hadoop的二手房销售签约数据分析与可视化系统,基于Python可视化的二手房销售数据分析平台
大数据·hadoop·python·数据分析·毕业设计项目·毕业设计源码·计算机毕设选题
Direction_Wind18 小时前
Flinksql bug: Heartbeat of TaskManager with id container_XXX timed out.
大数据·flink·bug
计算机毕设残哥18 小时前
完整技术栈分享:基于Hadoop+Spark的在线教育投融资大数据可视化分析系统
大数据·hadoop·python·信息可视化·spark·计算机毕设·计算机毕业设计
轻流AI20 小时前
线索转化率翻3倍?AI重构CRM
大数据·人工智能·低代码·重构
Kay_Liang21 小时前
从聚合到透视:SQL 窗口函数的系统解读
大数据·数据库·sql·mysql·数据分析·窗口函数