web-dev-qa-db-ja.com

Pysparkのデータフレームからスキーマ定義を取得する方法

PySparkでは、この事前定義されたスキーマを使用してスキーマを定義し、データソースを読み取ることができます。 NS。:

_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)
                    ])
_

いくつかのデータソースでは、データソースからスキーマを推測し、このスキーマ定義でデータフレームを取得することが可能です。

データフレームからスキーマ定義(上記の形式)を取得することは、データが以前に推測されていますか?

df.printSchema()スキーマをツリーとして印刷するが、上記のように定義されたスキーマを再利用する必要があるので、このスキーマを別のデータソースから以前に推測したデータソースを読み取ることができます。

20
Hauke Mallow

PysparkからDDL文字列を探している場合:

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