如何在spark 2.X中验证Json模式?

时间:2018-06-07 07:27:32

标签: json scala apache-spark pyspark spark-streaming

使用 Spark 流式传输(用 Scala 编写)来读取来自Kafka的消息。 消息都是Json格式的字符串。

在局部变量expectedSchema中定义预期的架构 然后将RDD中的字符串解析为Json

spark.sqlContext.read.schema(schema).json(rdd.toDS())

问题: Spark会处理所有记录/行,只要它有一些我尝试读取的字段,即使输入行的实际Json格式(即架构)(String) )与我的expectedSchema不匹配。

假设期望的架构看起来像这样(在Json中):{"a": 1,"b": 2, "c": 3} 输入行如下所示:{"a": 1, "c": 3} Spark将处理输入而不会失败。

我尝试使用此处描述的解决方案:How do I apply schema with nullable = false to json reading

但是assert(readJson.schema == expectedSchema)永远不会失败,即使我故意发送带有错误Json架构的输入行。

  1. 我有办法验证给定输入行的实际架构是否符合我预期的架构?

  2. 我有没有办法在“损坏”架构行中缺少“填充”字段的空值?

0 个答案:

没有答案