Structrured Streaming整合Kafka示例

1、创建测试的 Topic 
	
	kafka启动脚本(启动kafka之前,必须先启动zookeeper & 集群)
	bin/kafka-server-start.sh config/server.properties > /dev/null 2>&1 &
	创建topic
	bin/kafka-topics.sh --create --zookeeper hadoop100:2181 --replication-factor 1 --partitions 1 --topic structrued_streaming_1
  	查看topic是否创建成功
	bin/kafka-topics.sh --list --zookeeper hadoop100:2181
	启动生产者 发送测试数据
	bin/kafka-console-producer.sh --broker-list hadoop100:9092 --topic structrued_streaming_1

2、编写Structrued Streaming作为消费者代码
	package com.itcast.sql

import org.apache.spark.sql.SparkSession

object Structrued_Kafka {

  def main(args: Array[String]): Unit = {

    val spark = SparkSession.builder()
      .master("local[6]")
      .appName("structrued kafka")
      .getOrCreate()

    spark.sparkContext.setLogLevel("error")

    import spark.implicits._

    //get source

    val source = spark.readStream
      .format("kafka")
      .option("kafka.bootstrap.servers", "hadoop100:9092")
      .option("subscribe", "structrued_streaming_1")
      .option("startingOffsets", "earliest")
      .load()
      .selectExpr("CAST(value as STRING) as value")
      .as[String]

    // 1::Toy Story::Animation|Children's|Comedy
    val resultDF = source.map(item => {
      val words = item.split("::")
      (words(0).toInt, words(1).toString, words(2).toString)
    }).as[(Int, String, String)].toDF("id", "name", "category")

    //sink
    resultDF.writeStream
	//      .format("parquet")
	//      .option("path", "data/kafka/")
	//      .option("checkpointLocation", "data/checkpoint/")
	        .format("console")
	      .start()
	      .awaitTermination()
	
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值