如何通过scala在spark中显示结构化流中的json键

时间:2017-07-20 13:14:22

标签: json scala apache-spark streaming

我是新手,并试图理解结构化流媒体,我想显示从kafka到spark控制台的json密钥,任何帮助都会有很大的帮助。

Spark代码

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.ProcessingTime

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

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

    spark.sparkContext.setLogLevel("WARN")

//    val schema = StructType().add("a", IntegerType()).add("b", StringType())

    val schema = StructType(Seq(
      StructField("a", IntegerType, true),
      StructField("b", StringType, true)
    ))

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


    values = df.select("a.*")

    values.writeStream
      .outputMode("complete")
      .format("console")
      .start()a
      .awaitTermination()

我想显示提取整个json并将其显​​示到spark控制台

我对kafka的输入

{
    "a": {
       "b": 1,
       "c": 2
    }
}

输出到spark控制台应该是这样的

 {
   "a": {
          "b": 1,
          "c": 2
       }
  }

0 个答案:

没有答案