是用于Spark结构化流处理Json记录的模式

时间:2018-03-22 19:59:44

标签: apache-spark spark-streaming spark-structured-streaming

我正在浏览以下博客中的火花结构流媒体。

Structured Streaming

他首先使用下面的代码创建模式变量。

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记录吗?

1 个答案:

答案 0 :(得分:0)

需要架构。

这很容易测试。只需在运行结构化流式传输查询时删除“.schema()”选项,它就会失败并显示需要架构的消息。

Schema inference and partition of streaming DataFrames/Datasets