У меня есть фрейм данных df
, который читает файл JSON следующим образом:
df = spark.read.json("/myfiles/file1.json")
df.dtypes
показывает следующие столбцы и типы данных:
id – string
Name - struct
address - struct
Phone - struct
start_date - string
years_with_company - int
highest_education - string
department - string
reporting_hierarchy - struct
Я хочу извлечь только неструктурные столбцы и создать фрейм данных.Например, мой результирующий фрейм данных должен иметь только id
, start_date
, highest_education
и department
.
Вот код, который у меня есть, который частично работает, так как я получаю только последний нестолбец -struct department
значения заполнены в нем.Я хочу собрать все столбцы неструктурного типа и затем преобразовать их во фрейм данных:
names = df.schema.names
for col_name in names:
if isinstance(df.schema[col_name].dataType, StructType):
print("Skipping struct column %s "%(col_name))
else:
df1 = df.select(col_name).collect()
Я почти уверен, что это не лучший способ сделать это, и я упустил что-то, что не могу поставитьмой палец, поэтому я был бы признателен за вашу помощь.Спасибо.