当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python PySpark DataFrame toJSON方法用法及代码示例


PySpark DataFrame 的toJSON(~) 方法将DataFrame 转换为string-typed RDD。当提取RDD数据时,DataFrame的每一行将被转换为字符串JSON。请参阅下面的示例以进行说明。

参数

1. use_unicode | boolean

转换过程中是否使用unicode。默认情况下,use_unicode=True

返回值

MapPartitionsRDD 对象。

例子

考虑以下PySpark DataFrame:

df = spark.createDataFrame([["André", 20], ["Bob", 30], ["Cathy", 30]], ["name", "age"])
df.show()



+-----+---+
| name|age|
+-----+---+
|André| 20|
|  Bob| 30|
|Cathy| 30|
+-----+---+

将 PySpark DataFrame 的第一行转换为字典

要将 PySpark DataFrame 的第一行转换为 string-encoded JSON:

df.toJSON().first()



'{"name":"André","age":20}'

要将 string-encoded JSON 转换为本机 dict

import json
json.loads(df.toJSON().first())



{'name': 'André', 'age': 20}

将 PySpark DataFrame 转换为行对象列表(字典)

要将 PySpark DataFrame 转换为 string-encoded JSON 列表:

df.toJSON().collect()



['{"name":"André","age":20}',
 '{"name":"Bob","age":30}',
 '{"name":"Cathy","age":30}']

要将 PySpark DataFrame 转换为本机 dict 列表:

df.toJSON().map(lambda str_json: json.loads(str_json)).collect()



[{'name': 'André', 'age': 20},
 {'name': 'Bob', 'age': 30},
 {'name': 'Cathy', 'age': 30}]

这里:

  • 我们使用 RDD.map(~) 方法在 RDD 的每个元素上应用自定义函数。

  • 我们的自定义函数将每个 string-encoded JSON 转换为 dict

将 PySpark DataFrame 行转换为字符串 JSON 时禁用 unicode

默认情况下,启用 unicode:

df.toJSON().first()   # use_unicode=True



'{"name":"André","age":20}'

要禁用 unicode,请设置 use_unicode=False

df.toJSON(use_unicode=False).first()



b'{"name":"Andr\xc3\xa9","age":20}'

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 PySpark DataFrame | toJSON method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。