0

我pyspark數據幀具有以下模式:再添加一個StructField到架構

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

這適用於少數領域的卜如果我有數百個字段,t就不會生成。所以我想知道是否有一個更優雅的方式來添加一個新的字段到模式的開始?謝謝!

回答

1

您可以複製現有領域和perpend:

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

StructType(to_prepend + df.schema.fields) 
+0

我得到了以下錯誤: ----> 5 StructType(to_prepend + schema.fields) AttributeError的: 'NoneType' 對象沒有屬性'fields' – Edamame

+1

我的意思是如果模式確實是一個模式。你執行'spark_df.printSchema()',它不返回有用的值。 – zero323