如何修剪pyspark模式输出

qrjkbowd  于 2023-05-22  发布在  Spark
关注(0)|答案(1)|浏览(138)

我的pyspark dataframe有以下模式...
DataFrame[ExternalData: struct<provider:string,data:string,modality:array<string>>]
如果我写(其中sdf是我的pyspark Dataframe )..
sdf.schema
我...

StructType([StructField('ExternalData', StructType([StructField('provider', StringType(), True), StructField('data', StringType(), True), StructField('modality', ArrayType(StringType(), True), True)]), True)])

我怎样才能得到下面的呢?

StructType([StructField('provider', StringType(), True), StructField('data', StringType(), True), StructField('modality', ArrayType(StringType(), True), True)])

有一个细微的区别,即ExternalDataStructTypeStructField已被删除。我需要这样做的原因是,我集成的系统需要这种格式的parquet模式,其中ExternalData字段和结构体被传递到其他地方。
有人有什么建议吗?

v1uwarro

v1uwarro1#

试试这个:

您的DataFrame架构:

root
 |-- ExternalData: struct (nullable = true)
 |    |-- provider: string (nullable = true)
 |    |-- data: string (nullable = true)
 |    |-- modality: array (nullable = true)
 |    |    |-- element: string (containsNull = true)

选择ExternalData的所有子列以获得所需的输出

sdf = sdf.select("ExternalData.*")
sdf.printSchema()

输出:

root
 |-- provider: string (nullable = true)
 |-- data: string (nullable = true)
 |-- modality: array (nullable = true)
 |    |-- element: string (containsNull = true)

相关问题