如何在Spark 2.3.0结构化流中轻松地从kafka中提取已知类的json数据

时间:2018-07-29 09:53:05

标签: json scala apache-kafka spark-structured-streaming

this databricks blogpost中,他们指示如何从kafka中提取json数据:

# Construct a streaming DataFrame that reads from topic1
df = spark \
  .readStream \
  .format("kafka") \
  .option("kafka.bootstrap.servers", "host1:port1,host2:port2") \
  .option("subscribe", "topic1") \
  .option("startingOffsets", "earliest") \
  .load()
  .selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)")

# value schema: { "a": 1, "b": "string" }
schema = StructType().add("a", IntegerType()).add("b", StringType())
df.select( \
  col("key").cast("string"),
  from_json(col("value").cast("string"), schema))

是否有一种方法可以从已知的案例类创建模式,而无需手动定义所有字段?

注意:这是一个spark 2.2文档,我相信您现在必须在模式行中添加new
schema = new StructType().add("a", new IntegerType()).add("b", new StringType())
感谢this这样的问题,我得以弄清这一点。

0 个答案:

没有答案