Попытка создать несколько искровых фреймов данных на каждом уровне вложенного XML-файла. - PullRequest
1 голос
/ 09 июля 2019

ТАК Я использую версию сообщества databricks для анализа xml-файла в искровых фреймах с использованием реализации pyspark и хочу создать несколько фреймов данных каждого уровня xml

Я написал блок кода, в котором я читаю xml и сглаживаю узлы верхнего уровня в одном кадре данных

df_xml = spark.read.format('com.databricks.spark.xml').options(rootTag='POSLog',rowTag='Transaction').load(file_location)

from pyspark.sql.functions import *

def flatten_df(nested_df):
    exist = True
    while exist:
        flat_cols = [c[0] for c in nested_df.dtypes if c[1][:6] != 'struct']
        nested_cols = [c[0] for c in nested_df.dtypes if c[1][:6] == 'struct']
        if len(nested_cols) > 0:
          print(nested_cols)
          flat_df = nested_df.select(flat_cols +
                                     [col("`"+nc+'`.`'+c+"`").alias((nc+'_'+c).replace(".","_"))
                                      for nc in nested_cols
                                      for c in nested_df.select("`"+nc+'`.*').columns])
          nested_df=flat_df
          #break
        else:
          exist = False
    return flat_df
df1=flatten_df(df_xml)
display(df1)

Однако я не могу / не знаю, как получить доступ к столбцам рассматриваемого фрейма данных, чтобы я мог выполнить цикл и получить дополнительные фреймы данных.

...