How to flatten complex nested json file using pyspark

问题描述 投票:0回答:0

我有一个嵌套的复杂 json 文件,其中结构类型、数组类型、列表、字典相互嵌套。

我有一个函数可以将结构类型的列展平,但是当它遇到任何其他类型时它会失败。

他们是否有任何递归函数可以正确处理所有这些类型并使用 pyspark 数据帧展平到叶级别?

我用来展平结构类型的代码是:

def flatten_df(nested_df):
stack = [((), nested_df)]
columns = []
while len(stack) > 0:
    parents, df = stack.pop()
    for column_name, column_type in df.dtypes:
        if column_type[:6] == "struct":
            projected_df = df.select(column_name + ".*")
            stack.append((parents + (column_name,), projected_df))
        else:
            columns.append(col(".".join(parents + (column_name,))).alias("_".join(parents + (column_name,))))
return nested_df.select(columns)

我需要处理空结构、空数组、空列表、空字典,因为它也可能有空值。

如何使用 pyspark 实现这一目标?

python python-3.x apache-spark pyspark pyspark-pandas
© www.soinside.com 2019 - 2024. All rights reserved.