0
に1以上StructFieldを追加

マイ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) 

私はスキーマに1以上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)]) 

これはフィールドBUの数が少ないために働きます私は何百ものフィールドを持っていれば生成できませんでした。だから私は、スキーマの先頭に新しいフィールドを追加するよりエレガントな方法はありますか?ありがとう!

答えて

1

既存のフィールドと案ずるをコピーすることができます。 ----> 5 StructType(to_prepend + schema.fields) はAttributeError: 'NoneType' オブジェクトが属性を持っていない

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

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

私は、次のエラーを得ました'fields' – Edamame

+1

スキーマが実際にスキーマであるかどうかを意味します。有用な値を返さない 'spark_df.printSchema()'を実行します。 – zero323