首页 > 解决方案 > 如何从大量杂乱的结构化数据中找出模式?

问题描述

我有一个庞大的数据集,其中包含凌乱的结构化模式。也就是说,相同的数据字段可以有不同数据类型的数据,例如data.tags可以是字符串列表或对象列表

我尝试从 hdfs 加载 JSON 数据并打印架构,但出现以下错误。 TypeError: Can not merge type <class 'pyspark.sql.types.ArrayType'> and <class 'pyspark.sql.types.StringType'>

这是代码

    data_json = sc.textFile(data_path)
    data_dataset = data_json.map(json.loads)
    data_dataset_df = data_dataset.toDF()
    data_dataset_df.printSchema()

是否有可能找出类似的架构

root
 |-- children: array (nullable = true)
 |    |-- element: map (containsNull = true)
 |    |    |-- key: string
 |    |    |-- value: boolean (valueContainsNull = true)
 |    |-- element: string
 |-- first_name: string (nullable = true)
 |-- last_name: string (nullable = true)
 |-- occupation: string (nullable = true)

在这种情况下?

标签: apache-sparkpysparkbigdata

解决方案


如果我理解正确,您正在寻找如何推断 JSON 文件的架构。您应该看一下直接将 JSON 读入 DataFrame,而不是通过 Python 映射函数。

另外,我指的是如何推断 JSON 文件的模式?,因为我认为它回答了你的问题。


推荐阅读