當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。