apache-spark - 如何从 PySpark 中的数据帧获取架构定义?

标签 apache-spark dataframe pyspark schema azure-databricks

在 PySpark 中,您可以定义一个架构并使用此预定义架构读取数据源,例如。例如:

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() 将模式打印为树,但我需要重用该模式,并按上面的方式定义它,这样我就可以使用该模式读取已经被之前从另一个数据源推断出。

最佳答案

是的,这是可能的。使用DataFrame.schema property

schema

Returns the schema of this DataFrame as a pyspark.sql.types.StructType.

>>> df.schema
StructType(List(StructField(age,IntegerType,true),StructField(name,StringType,true)))

New in version 1.3.

架构 can be also exported to JSON and imported back如果需要的话。

关于apache-spark - 如何从 PySpark 中的数据帧获取架构定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54503014/

相关文章:

python - PySpark 数据框中的日期差异

python - 无法通过python Spark连接MysqlDB

scala - 基于具有交集的外部数组过滤数据框数组项

scala - 取 Struct 中 double 嵌套向量的平均值

python - 如何在 groupby pandas dataFrame 中创建具有条件计数的新列

pandas - 使用 Pandas.rolling 计算滚动自相关

hadoop - 为什么cloudera建议选择他们在Spark中做的executors、cores和RAM的数量

java - 在 Spark 中过滤自定义数据结构

apache-spark - PySpark:如何使用 isnan 检查列是否包含数字

python - 如何从 pandas 数据框中动态选择子集?