再向架构添加一个 StructField

Posted

技术标签:

【中文标题】再向架构添加一个 StructField【英文标题】:Add one more StructField to schema 【发布时间】:2016-09-18 18:38:27 【问题描述】:

我的 PySpark 数据框具有以下架构:

schema = spark_df.printSchema()
root
 |-- field_1: double (nullable = true)
 |-- field_2: double (nullable = true)
 |-- field_3 (nullable = true)
 |-- field_4: double (nullable = true)
 |-- field_5: double (nullable = true)
 |-- field_6: double (nullable = true)

我想在架构中再添加一个 StructField,因此新架构如下所示:

root
 |-- field_1: double (nullable = true)
 |-- field_1: double (nullable = true)
 |-- field_2: double (nullable = true)
 |-- field_3 (nullable = true)
 |-- field_4: double (nullable = true)
 |-- field_5: double (nullable = true)
 |-- field_6: double (nullable = true)

我知道我可以手动创建一个 new_schema,如下所示:

new_schema = StructType([StructField("field_0", StringType(), True),
                            :
                         StructField("field_6", IntegerType(), True)])

这适用于少数字段,但如果我有数百个字段则无法生成。所以我想知道是否有一种更优雅的方法可以将新字段添加到模式的开头?谢谢!

【问题讨论】:

【参考方案1】:

您可以复制现有字段并附加:

to_prepend = [StructField("field_0", StringType(), True)] 

StructType(to_prepend + df.schema.fields)

【讨论】:

我收到以下错误:----> 5 StructType(to_prepend + schema.fields) AttributeError: 'NoneType' object has no attribute 'fields' 我的意思是如果架构真的是一个架构。您执行 spark_df.printSchema() 不会返回有用的值。 如果您可能需要添加多个字段,也可以使用以下内容:***.com/questions/42959493/…

以上是关于再向架构添加一个 StructField的主要内容,如果未能解决你的问题,请参考以下文章

继Knative 后,谷歌再向 CNCF 捐赠 Istio

继Knative 后,谷歌再向 CNCF 捐赠 Istio

如何建造一个空的顺序表,然后再向里面插入数据,C语言

为博客添加目录

什么是安全证书,访问者到底是怎么校验安全证书的,服务端返回安全证书后,客户端再向谁验证呢?

TableView Cell -> UISearchBar : 对数据进行排序,其中关键字匹配最多的记录应先显示,然后再向最少