我有一个模式结构如下:
StructField('results', ArrayType(MapType(StringType(), StringType()), True), True),
StructField('search_information', MapType(StringType(), StringType()), True),
StructField('metadata', MapType(StringType(), StringType()), True),
StructField('parameters', MapType(StringType(), StringType()), True),
StructField('results_2', MapType(StringType(), StringType()), True),
我在一个文件中有上述列,每个文件可能有也可能没有这些列,我将JSON文件读为
spark.read.JSON.option(schema=schema, path=path)
我需要检查某些列是否存在并进行必要的转换。
if "metadata:" in df.schema.simpleString():
上面总是返回“True”,因为我已经定义了模式。如何检查文件原始数据中是否存在列?
1条答案
按热度按时间3bygqnnd1#
您可以在不指定模式的情况下读取文件:
然后,如果要检查列是否存在,可以使用以下方法之一:
第一次
另一种方法是使用Python工具检查JSON中是否存在键: