web-dev-qa-db-ja.com

from_jsonをKafka connect0.10およびSpark構造化ストリーミングで使用する方法は?

[Databricks] [1]から例を再現し、それを新しいコネクタに適用してKafka and spark構造化ストリーミングを実行しようとしましたが、解析できませんSparkのすぐに使えるメソッドを使用してJSONを正しく使用する...

注:トピックはJSON形式でKafkaに書き込まれます。

val ds1 = spark
          .readStream
          .format("kafka")
          .option("kafka.bootstrap.servers", IP + ":9092")
          .option("zookeeper.connect", IP + ":2181")
          .option("subscribe", TOPIC)
          .option("startingOffsets", "earliest")
          .option("max.poll.records", 10)
          .option("failOnDataLoss", false)
          .load()

次のコードは機能しません。これは、列jsonが文字列であり、メソッドfrom_json署名と一致しないためだと思います...

    val df = ds1.select($"value" cast "string" as "json")
                .select(from_json("json") as "data")
                .select("data.*")

任意のヒント?

[更新]動作例: https://github.com/katsou55/kafka-spark-structured-streaming-example/blob/master/src/main/scala-2.11/Main.scala

10

まず、JSONメッセージのスキーマを定義する必要があります。例えば

val schema = new StructType()
  .add($"id".string)
  .add($"name".string)

これで、このスキーマを次のようにfrom_jsonメソッドで使用できます。

val df = ds1.select($"value" cast "string" as "json")
            .select(from_json($"json", schema) as "data")
            .select("data.*")
23
abaghel