apache-spark - 如何从大量杂乱的结构化数据中找出模式?
问题描述
我有一个庞大的数据集,其中包含凌乱的结构化模式。也就是说,相同的数据字段可以有不同数据类型的数据,例如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)
在这种情况下?
解决方案
如果我理解正确,您正在寻找如何推断 JSON 文件的架构。您应该看一下直接将 JSON 读入 DataFrame,而不是通过 Python 映射函数。
另外,我指的是如何推断 JSON 文件的模式?,因为我认为它回答了你的问题。
推荐阅读
- html - 引导输入组前置/插件宽度调整
- spring-boot - JSP页面未在SpringBoot应用程序中呈现
- css - ReferenceError: 窗口未定义导入 css
- mysql - Mysql2::Error "Access denied for user" 在 database.yml 中使用 env 变量
- angular - 通过 getElementById 以编程方式单击 mat-checkbox
- django-queryset - 2个值之间的查询集过滤器带有外键?
- javascript - 如何从 word javascript api 向 http:localhost 发出 GET 请求?
- android - 如何使用 GoogleMaps 绘制 Snake 路径?
- protractor - 如何在钩子后给予黄瓜优先顺序
- python - tkinter 是否包含在 python3 debian 包中?