通过将键作为列将 json 字典转换为 spark 数据帧
Posted
技术标签:
【中文标题】通过将键作为列将 json 字典转换为 spark 数据帧【英文标题】:Converting json dictionary to spark dataframe by having keys as columns 【发布时间】:2020-11-18 17:51:54 【问题描述】:是否可以通过将键作为列和下面的值来将字典转换为数据框?
我有这个来自 api 的结果集作为字典:
'information': [
'created': '2020-10-26T00:00:00+00:00',
'title': 'Random1',
'published': 'YES',
,
'created': '2020-11-06T00:00:00+00:00',
'title': 'Random2',
'published': 'YES',
,
'created': '2020-10-27T00:00:00+00:00',
'title': 'Random3',
'published': 'YES',
,
'created': '2020-10-29T00:00:00+00:00',
'title': 'Random4',
'published': 'YES',
]
如果我将其转换为这样的数据框:
json_rdd=sc.parallelize([data_dict['information']])
spark_df = spark.createDataFrame(json_rdd)
spark_df.createOrReplaceTempView("data_df");
这给了我列为 _1、_2、_3、_4 的列,其中的数据仍显示为对象。
是否可以让 data_df(转换后的数据框)将列显示为已创建、标题、已发布,并将相应列中的值显示为平面?
【问题讨论】:
【参考方案1】:您可以直接使用字典创建数据框,无需将其转换为rdd。
arr = your_dict_here
spark.createDataFrame(arr['information']).show()
输出:
+--------------------+---------+-------+
| created|published| title|
+--------------------+---------+-------+
|2020-10-26T00:00:...| YES|Random1|
|2020-11-06T00:00:...| YES|Random2|
|2020-10-27T00:00:...| YES|Random3|
|2020-10-29T00:00:...| YES|Random4|
+--------------------+---------+-------+
【讨论】:
以上是关于通过将键作为列将 json 字典转换为 spark 数据帧的主要内容,如果未能解决你的问题,请参考以下文章
在python中的字典上使用join()将键值对作为一个长字符串返回
通过保留顺序,根据 id 列将 Spark DataFrame 拆分为两个 DataFrame(70% 和 30%)
Postgresql:如何在不使用中间 hstore 的情况下将键值表转换为 json
转换具有 numpy 数组的列将其转换为 dtype 作为对象的 numpy 数组