web-dev-qa-db-fra.com

Comment obtenir la définition du schéma d'un Dataframe à Pyspark?

Dans Pyspark, vous pouvez définir un schéma et lire des sources de données avec ce schéma prédéfini, e. g.:

Schema = StructType([ StructField("temperature", DoubleType(), True),
                      StructField("temperature_unit", StringType(), True),
                      StructField("humidity", DoubleType(), True),
                      StructField("humidity_unit", StringType(), True),
                      StructField("pressure", DoubleType(), True),
                      StructField("pressure_unit", StringType(), True)
                    ])

Pour certaines données de données, il est possible de déduire le schéma de la source de données et d'obtenir un Dataframe avec cette définition de schéma.

Est-il possible d'obtenir la définition de schéma (sous le formulaire décrit ci-dessus) à partir d'un fichier de données, où les données ont été déduites auparavant?

df.printSchema() Imprime le schéma comme arbre, mais j'ai besoin de réutiliser le schéma, le présentant comme ci-dessus, je peux donc lire une source de données avec ce schéma qui a été déduit avant d'une autre source de données.

20
Hauke Mallow

Si vous recherchez une chaîne DDL de Pyspark:

df: DataFrame = spark.read.load('LOCATION')
schema_json = df.schema.json()
ddl = spark.sparkContext._jvm.org.Apache.spark.sql.types.DataType.fromJson(schema_json).toDDL()
0
Boris