Если я правильно понимаю вашу проблему, вы хотите обработать структурные поля как их собственные таблицы:
from pyspark.sql.functions import explode
def get_struct_dfs(df):
result_dfs = []
for column in df.columns:
if isinstance(df.schema[column].dataType, (ArrayType, )):
exploded_df = df.select(explode(column))
result_dfs.extend(process(exploded_df))
elif isinstance(df.schema[column].dataType, (StructType, )):
exploded_df = df.select(f"{column}.*")
result_dfs.append(exploded_df)
return result_dfs