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中查看到

查看消费进度

相关推荐
野生数据人9 小时前
日志平台每日巡检我压成了一条命令链:从 SHOW BACKENDS 到扩缩容的完整步骤
大数据·数据库
liliangcsdn9 小时前
如何用DrissionPage进行网页自动化
大数据·自动化
野生数据人9 小时前
日志平台运维速查表:巡检命令、阈值、参数,一张贴墙
大数据·数据库
xiaogai_gai10 小时前
物料主数据从ERP同步到电商中台:基于轻易云的编码映射与增量全量双轨实践
大数据·数据库
SelectDB10 小时前
信创适配速查手册:国产 CPU / OS 对照表、认证许可速查与部署检查项清单
大数据·数据库·数据分析
亚川楼宇自控系统数据中心厂家10 小时前
机房 3D 可视化技术:从平面监控到立体化管理的升级
大数据·数据库·人工智能
LaughingZhu10 小时前
任务在飞书创建,开发在 Orca 继续:我把飞书项目接到了 Linear
大数据·人工智能·深度学习·神经网络·飞书
SelectDB10 小时前
部署形态与存算分离速查:形态对照、配置项清单与关键命令片段
大数据·数据结构·数据库
SelectDB10 小时前
Workload Group 参数速查:排队与并发配置、CPU 软硬限切换与常见配置问题清单
大数据·数据库·数据分析
智享 AI 科技11 小时前
2026年AI私域系统怎么选?从功能到服务的全维度对比
大数据·人工智能·经验分享