加载 spark df 时检查文件是否符合模式

Check if the file respects the schema when loading a spark df

我正在为加载的 df 手动定义模式:

my_schema= StructType([ \
    StructField("foo",StringType(),True), \
    StructField("bar",StringType(),True)
  ])

df = spark.read\
  .schema(my_schema)\
  .option("multiline", True)\
  .json('my_path')

有没有办法在加载之前确保此文件符合架构?如果有不匹配的列,我不想加载文件。我试图避免加载 df 来执行此检查。

我认为 "pure" Spark API 不可能。

使用 Spark API 您可以读取具有特定模式的输入文件并限制为 1 行(例如),而不是 运行 您的模式验证步骤:

df = spark.read \
  .schema(my_schema) \
  .option("multiline", True) \
  .json('my_path') \
  .limit(1)