簡體   English   中英

Spark 結構化流式傳輸 scala + 融合模式注冊表(json 模式)

[英]Spark structured streaming scala + confluent schema registry (json schema)

我有一個 spark 結構化流式傳輸 scala 作業,它從 kafka 讀取 json 消息並將數據寫入 S3。 我配置了一個融合模式注冊表,模式采用 json 格式,type=object。 現在我可以從注冊表中檢索架構,但我需要在包含來自 kafka 的記錄的 dataframe 上使用此架構。

val restService = new RestService(schemaRegistryURL)
val valueRestResponseSchema = restService.getLatestVersion(schemaName) // return type is io.confluent.kafka.schemaregistry.client.rest.entities.Schema

現在我想在下面的代碼中使用 valueRestResponseSchema。 如何將 valueRestResponseSchema 轉換為 structtype 以便能夠在 from_json 中應用? val 值:DataFrame = df.selectExpr("CAST(value AS STRING) as data").select(from_json(col("data"), valueRestResponseSchema).as("data"))

是否有任何 Json 架構轉換器可供使用? 類似於下面的帖子,但適用於 json。 將 Spark Structured Streaming 與 Confluent Schema Registry 集成

將 valueRestResponseSchema 轉換為結構類型

您可以從 object 中獲取原始 json 模式,但如果您自己找不到任何 json 模式 SparkSQL 庫,則需要手動轉換為 Spark 結構,因為 Spark 不提供它,就像 Avro 那樣.

順便說一句,模式不是必需的。 您可以將get_json_object與 JSONPath 表達式一起用於字符串。

但是,您需要使用substring SparkSQL function 刪除值的前 5 個字節,然后才能解析原始 json 值。

從kafka讀取json條消息並將數據寫入S3

或者您可以改用 Confluent S3 Sink 連接器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM