json 文件模式/对象以触发模式以加载数据帧
Posted
技术标签:
【中文标题】json 文件模式/对象以触发模式以加载数据帧【英文标题】:json file schema/object to spark schema for loading dataframe 【发布时间】:2018-07-13 16:37:07 【问题描述】:我必须使用 pySpark 将大量文件加载到配置单元表中。有多个不同的 json 文件包含数据和定义文件数据模式的单独文件。在不传递模式的情况下加载文件时,数据列会乱序,这就是我想创建模式的原因。 Json 文件如下所示:
data: 'col1': 'ASDFG', 'col2': 'ASDXC'...
schema: 'description': 'filename', 'type': 'object', 'properties': 'col1': 'type': 'string', 'col2': 'type': 'string, 'col3': 'type': 'string ...
我的想法是将此文件作为字典读取,提取“属性”键值作为列名和数据类型,然后以某种方式生成用于将火花数据帧加载到配置单元的架构。还有其他选择吗?如果你们中的任何人遇到过这种情况,我将非常感谢您的帮助或提供一些示例。
谢谢。
【问题讨论】:
【参考方案1】:你说它们乱序,但那是因为 python dicts 没有顺序(最新版本除外)。
你可以改用OrderedDict
,他们会保持原来的顺序:
from collections import OrderedDict
data = json.loads(my_json, object_pairs_hook=OrderedDict)
【讨论】:
我所说的乱序的意思是,例如,当数据加载到 hive 时,必须在第 1 列中的数据是为什么不同的列。我将所有数据直接传递给 spark 数据框,并且似乎列名的排序方式与文件中的顺序不同。这就是为什么我想创建模式,我想在加载数据时传递它以将所有内容都保存在配置单元中。 @AdasKavaliauskas 你是如何在 hive 中加载数据的?您是否尝试过使用 OrderedDicts 但它不起作用? 不,我没有尝试过 OrderedDicts。我正在使用 SparkContext 读取 json 以创建数据框,然后写入配置单元。应该先用json.loads?以上是关于json 文件模式/对象以触发模式以加载数据帧的主要内容,如果未能解决你的问题,请参考以下文章
Spark:如何解析嵌套列表的 JSON 字符串以触发数据框?
添加按钮以在 Chumper Datatable 行中触发引导模式