在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这样的问题,我得以弄清这一点。