После некоторых исследований я смог найти решение для моего вопроса с помощью этого блога: https://medium.com/@lvhuyen / working-with-spark-dataframe-has-complex-schema-a3bce8c3f44, Размещение ответа здесь, если у кого-то есть такой же запрос.
Я создал новую схему для определенного столбца, изменив имена полей и приведя схему для столбца во фрейме данных
from pyspark.sql.functions import col
from pyspark.sql.types import (
ArrayType, LongType, StringType, StructField, StructType)
struct_schema = ArrayType(StructType([
StructField("indexname", StringType()),
StructField("indexsymbol", StringType()),
]))
df_renamed = df.withColumn("profile.details.indices.index", col("`profile.details.indices.index`").cast(struct_schema))
Теперь схема данных выглядит так:
|-- profile.details.indices.index: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- indexname: string (nullable = true)
| | |-- indexsymbol: string (nullable = true)
Существуют и другие решения, но поскольку в моей исходной схеме было более 100 других полей, я нашел, что это решение полезно для изменения конкретного вложенного столбца и сохранить старую схему