试图理解结构化流媒体

时间:2017-07-24 14:26:56

标签: scala apache-kafka spark-streaming

我是Apache spark的新手,并尝试用scala中的Apache kafka理解结构化流媒体,但是没有任何工作对我有利,直到现在基本上我想从kafka流程发送JSON,使用spark结构化流媒体并发送回kafka。我尝试了网站上给出的例子,但它没有用。

这是我的代码:

import org.apache.spark.sql._
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types.StructType
import org.apache.spark.sql.types._
import org.apache.spark.sql.streaming.{OutputMode, Trigger}
object dataset_kafka {
  def main(args: Array[String]): Unit = {

    val spark = SparkSession
      .builder()
      .appName("kafka-consumer")
      .master("local[*]")
      .getOrCreate()

    import spark.implicits._

    spark.sparkContext.setLogLevel("WARN")

    val df = spark
      .readStream
      .format("kafka")
      .option("kafka.bootstrap.servers", "172.21.0.187:9093")
      .option("subscribe", "test")
      .load()

       df
      .selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)")
      .writeStream
      .format("kafka")
      .trigger(Trigger.ProcessingTime("5 seconds"))
      .option("kafka.bootstrap.servers", "172.21.0.187:9093")
      .option("topic", "test1")
      .option("checkpointLocation", "/home/hduser/Desktop/tempo")
      .start()
      .awaitTermination()
  }
}

任何有关我哪里出错的帮助?

我将以这种格式从kafka发送json:

{"schema":"Hiren","payload":"123"}

1 个答案:

答案 0 :(得分:1)

我最近发表了一篇专注于Apache Spark的结构化流媒体的技术资产选集。其中一个博客侧重于结构化流媒体:即使用结构化流媒体API将数据从Kafka流式传输到Spark。

我希望你能偷看它。请注意,仅在Spark 2.2中支持写回Kafka。

https://databricks.com/blog/2017/08/24/anthology-of-technical-assets-on-apache-sparks-structured-streaming.html