[英]How to create a Spark-SQL dataframe from JSON file where data and schema are both listed
[英]How can I use spark-sql to read and process a JSON event from kafka?
詳細說明:希望使用結構化火花流實現 Scala 代碼,使用 DataFrame 從 Kafka 讀取 JSON 事件,並使用 spark-sql 操作數據/列並將其寫入 hive?
使用 Scala 2.11/spark 2.2
我明白創建連接是直截了當的:
val df = spark
.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "host1:port1,host2:port2")
.option("subscribe", "topic1")
.load()
df.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)")
.as[(String, String)]
如何處理 JSON 事件? 假設所有事件都具有相同的模式,我是否必須提供模式,如果是的話,它是如何完成的,還有,如果有辦法推斷模式是如何完成的?
如果我理解正確,然后創建一個tempView ,我如何在該視圖上運行類似 sql 的查詢?
您的系統需要編輯:自動系統將此帖子標記為重復,但不是。 在鏈接的問題中,OP 要求修復他現有代碼的問題,一個(有效的)答案解決了 JSON 反序列化的問題。 我的問題與上述不同。 如果我的問題不清楚,請具體詢問,我會盡力進一步澄清。 謝謝你。
假設所有事件都具有相同的模式,我是否必須提供模式,如果是的話,它是如何完成的,還有,如果有辦法推斷模式是如何完成的?
更好的一面,如果您知道架構,請提供架構。 您可以按如下方式創建架構:
val schema = new StructType().add( "Id",IntegerType).add( "name",StringType)
然后從Kafka讀取數據並反序列化如下:
val data_df = df.select(from_json(col("value"), schema).as("data")).select("data.*")
您可以使用 data_df 創建臨時視圖。
data_df.createOrReplaceTempView("data_df")
現在您可以使用 spark sql 查詢視圖
spark.sql("select * from data_df").show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.