我正在浏览以下博客中的火花结构流媒体。
他首先使用下面的代码创建模式变量。
val cloudTrailSchema = new StructType()
.add("Records", ArrayType(new StructType()
.add("additionalEventData", StringType)
.add("apiVersion", StringType)
.add("awsRegion", StringType)
然后下面是实际的火花代码
val rawRecords = spark.readStream
.schema(cloudTrailSchema)
.json("s3n://mybucket/AWSLogs/*/CloudTrail/*/2017/*/*")
由于json记录默认具有模式,我们为什么要提供模式。例如,在spark批量流中,我们不在下面的代码行中提供任何模式。
val peopleDF = spark.read.json(path)
代码直接从Json记录中推断出Dataframe的架构。
那么我们可以在不使用模式的情况下处理spark结构化流媒体中的json记录吗?
答案 0 :(得分:0)
需要架构。
这很容易测试。只需在运行结构化流式传输查询时删除“.schema()”选项,它就会失败并显示需要架构的消息。
Schema inference and partition of streaming DataFrames/Datasets