使用 Pyspark 如何读取 JSON 文件并创建模式

Using Pyspark how to read JSON file and create schema

我有一个 JSON 文件,格式如下。如何阅读它并使用 PYSPARK 函数为此创建模式-

{
        "Entry": {
                "DataType": "Integer",
                "Length": "7",
                "Required": "True",
                "Description": "Enrty"
        },
        "Per": {
                "DataType": "String",
                "Length": "2",
                "Required": "True",
                "Description": "Per"
        }
}

您可以执行以下操作从 json 文件中获取 schema

from pyspark.sql import types as t
def getDataType(DataType):
    if DataType == 'Float':
        return t.FloatType()
    elif DataType == 'Integer':
        return t.IntegerType()
    elif DataType == 'Date':
        return t.DateType()
    elif DataType == 'Double':
        return t.DoubleType()
    else:
        return t.StringType()

def getNullable(Required):
    if Required == 'True':
        return True
    else:
        return False

df = spark.read.option('multiline', True).json('path to json file')
schema = t.StructType([t.StructField(x['Description'], getDataType(x['DataType']), getNullable(x['Required'])) for x in df.rdd.first()])

所以 schema 应该是

StructType(List(StructField(Enrty,IntegerType,true),StructField(Per,StringType,true)))