Satura tēma:
- PySpark DataFrame uz JSON, izmantojot To_json() ar ToPandas()
- PySpark DataFrame uz JSON, izmantojot ToJSON()
- PySpark DataFrame uz JSON, izmantojot Write.json()
Visos piemēros aplūkosim vienkāršu PySpark DataFrame un pārveidosim to par JSON, izmantojot minētās funkcijas.
Nepieciešamais modulis:
Instalējiet PySpark bibliotēku savā vidē, ja tā vēl nav instalēta. Lai to instalētu, varat atsaukties uz šo komandu:
pip instalēt pyspark
PySpark DataFrame uz JSON, izmantojot To_json() ar ToPandas()
Metode to_json() ir pieejama Pandas modulī, kas pārvērš Pandas DataFrame par JSON. Mēs varam izmantot šo metodi, ja mēs pārvēršam savu PySpark DataFrame par Pandas DataFrame. Lai PySpark DataFrame pārveidotu par Pandas DataFrame, tiek izmantota metode toPandas(). Apskatīsim to_json () sintaksi kopā ar tā parametriem.
Sintakse:
dataframe_object.toPandas().to_json(orient,index,...)
- Orient tiek izmantots, lai parādītu konvertēto JSON kā vēlamo formātu. Tas aizņem 'ierakstus', 'tabula', 'vērtības', 'kolonnas', 'indekss', 'sadalīts'.
- Indekss tiek izmantots, lai iekļautu/noņemtu indeksu no konvertētās JSON virknes. Ja tas ir iestatīts uz “True”, tiek parādīti indeksi. Pretējā gadījumā indeksi netiks parādīti, ja orientācija ir “sadalīta” vai “tabula”.
1. piemērs: orientējieties kā “ieraksti”
Izveidojiet “skills_df” PySpark DataFrame ar 3 rindām un 4 kolonnām. Konvertējiet šo DataFrame uz JSON, norādot orientācijas parametru kā “records”.
importēt pysparkimportēt pandas
no pyspark.sql importēt SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()
# prasmju dati ar 3 rindām un 4 kolonnām
prasmes =[{ 'id' : 123 , 'persona' : 'Mīļā' , 'prasme' : 'glezna' , 'balva' : 25 000 },
{ 'id' : 112 , 'persona' : 'Mouni' , 'prasme' : 'dejot' , 'balva' : 2000. gads },
{ 'id' : 153 , 'persona' : 'Tulasi' , 'prasme' : 'lasīšana' , 'balva' : 1200 }
]
# izveidojiet prasmju datu rāmi no iepriekšminētajiem datiem
Skills_df = linuxhint_spark_app.createDataFrame(skills)
# Faktiskie prasmju dati
prasmes_df.show()
# Konvertējiet uz JSON, izmantojot to_json() ar orientāciju kā ierakstus
json_skills_data = prasmes_df.toPandas().to_json(orient= 'ieraksti' )
drukāt (json_skills_data)
Izvade:
+---+------+-----+--------+
| id|persona|balva| prasme|
+---+------+-----+--------+
| 123 | Medus| 25 000 |gleznošana|
| 112 | Mouni| 2000. gads | dejot|
| 153 |Tulasi| 1200 | lasīšana|
+---+------+-----+--------+
[{ 'id' : 123 , 'persona' : 'Mīļā' , 'balva' : 25 000 , 'prasme' : 'glezna' },{ 'id' : 112 , 'persona' : 'Mouni' , 'balva' : 2000. gads , 'prasme' : 'dejot' },{ 'id' : 153 , 'persona' : 'Tulasi' , 'balva' : 1200 , 'prasme' : 'lasīšana' }]
Mēs redzam, ka PySpark DataFrame tiek pārveidots par JSON masīvu ar vērtību vārdnīcu. Šeit atslēgas apzīmē kolonnas nosaukumu, un vērtība apzīmē rindas/šūnas vērtību PySpark DataFrame.
2. piemērs: orientējieties kā “Sadalīts”
JSON formātā, ko atgriež “sadalītā” orientācija, ir iekļauti kolonnu nosaukumi, kuriem ir kolonnu saraksts, indeksu saraksts un datu saraksts. Tālāk ir norādīts “sadalītās” orientācijas formāts.
# Konvertējiet uz JSON, izmantojot to_json() ar orientāciju kā 'sadalīt'
json_skills_data = prasmes_df.toPandas().to_json(orient= 'sadalīt' )
drukāt (json_skills_data)
Izvade:
{ 'kolonnas' :[ 'id' , 'persona' , 'balva' , 'prasme' ], 'indekss' :[ 0 , 1 , 2 ], 'dati' :[[ 123 , 'Mīļā' , 25 000 , 'glezna' ],[ 112 , 'Mouni' , 2000. gads , 'dejot' ],[ 153 , 'Tulasi' , 1200 , 'lasīšana' ]]}3. piemērs: orientējieties kā 'indekss'
Šeit katra rinda no PySpark DataFrame tiek izņemta vārdnīcas veidā ar atslēgu kā kolonnas nosaukumu. Katrai vārdnīcai rādītāja pozīcija ir norādīta kā atslēga.
# Konvertējiet uz JSON, izmantojot to_json() ar orientāciju kā 'index'
json_skills_data = prasmes_df.toPandas().to_json(orient= 'indekss' )
drukāt (json_skills_data)
Izvade:
{ '0' :{ 'id' : 123 , 'persona' : 'Mīļā' , 'balva' : 25 000 , 'prasme' : 'glezna' }, '1' :{ 'id' : 112 , 'persona' : 'Mouni' , 'balva' : 2000. gads , 'prasme' : 'dejot' }, '2' :{ 'id' : 153 , 'persona' : 'Tulasi' , 'balva' : 1200 , 'prasme' : 'lasīšana' }}4. piemērs: orientējieties kā 'kolonnas'
Kolonnas ir katra ieraksta atslēga. Katrā kolonnā ir vārdnīca, kurā tiek ņemtas kolonnu vērtības ar indeksu numuriem.
# Konvertējiet uz JSON, izmantojot to_json() ar orientāciju kā kolonnas
json_skills_data = prasmes_df.toPandas().to_json(orient= 'kolonnas' )
drukāt (json_skills_data)
Izvade:
{ 'id' :{ '0' : 123 , '1' : 112 , '2' : 153 }, 'persona' :{ '0' : 'Mīļā' , '1' : 'Mouni' , '2' : 'Tulasi' }, 'balva' :{ '0' : 25 000 , '1' : 2000. gads , '2' : 1200 }, 'prasme' :{ '0' : 'glezna' , '1' : 'dejot' , '2' : 'lasīšana' }}5. piemērs: orientējieties kā “vērtības”
Ja jums ir nepieciešamas tikai JSON vērtības, varat izvēlēties “vērtību” orientāciju. Tas parāda katru rindu sarakstā. Visbeidzot, visi saraksti tiek saglabāti sarakstā. Šis JSON ir ligzdotā saraksta veids.
# Konvertējiet uz JSON, izmantojot to_json() ar orientāciju kā 'vērtības'
json_skills_data = prasmes_df.toPandas().to_json(orient= 'vērtības' )
drukāt (json_skills_data)
Izvade:
[[ 123 , 'Mīļā' , 25 000 , 'glezna' ],[ 112 , 'Mouni' , 2000. gads , 'dejot' ],[ 153 , 'Tulasi' , 1200 , 'lasīšana' ]]6. piemērs: orientējieties kā “tabula”
“Tabulas” orientācija atgriež JSON, kas ietver shēmu ar lauku nosaukumiem, kā arī kolonnu datu tipiem, indeksu kā primāro atslēgu un Pandas versiju. Kolonnu nosaukumi ar vērtībām tiek parādīti kā “dati”.
# Konvertējiet uz JSON, izmantojot to_json() ar orientāciju kā 'tabula'
json_skills_data = prasmes_df.toPandas().to_json(orient= 'tabula' )
drukāt (json_skills_data)
Izvade:
{ 'shēma' :{ 'lauki' :[{ 'vārds' : 'indekss' , 'tips' : 'vesels skaitlis' },{ 'vārds' : 'id' , 'tips' : 'vesels skaitlis' },{ 'vārds' : 'persona' , 'tips' : 'string' },{ 'vārds' : 'balva' , 'tips' : 'vesels skaitlis' },{ 'vārds' : 'prasme' , 'tips' : 'string' }], 'primārā atslēga' :[ 'indekss' ], 'pandas_version' : '1.4.0' }, 'dati' :[{ 'indekss' : 0 , 'id' : 123 , 'persona' : 'Mīļā' , 'balva' : 25 000 , 'prasme' : 'glezna' },{ 'indekss' : 1 , 'id' : 112 , 'persona' : 'Mouni' , 'balva' : 2000. gads , 'prasme' : 'dejot' },{ 'indekss' : 2 , 'id' : 153 , 'persona' : 'Tulasi' , 'balva' : 1200 , 'prasme' : 'lasīšana' }]}7. piemērs: ar indeksa parametru
Pirmkārt, mēs nododam indeksa parametru, iestatot to uz “True”. Katrai kolonnas vērtībai redzēsit, ka indeksa pozīcija tiek atgriezta kā atslēga vārdnīcā.
Otrajā izvadē tiek atgriezti tikai kolonnu nosaukumi (“kolonnas”) un ieraksti (“dati”) bez indeksa pozīcijām, jo indekss ir iestatīts uz “False”.
# Konvertējiet uz JSON, izmantojot to_json() ar indeksu = Truejson_skills_data = prasmes_df.toPandas().to_json(index=True)
print(json_skills_data, ' \n ' )
# Konvertējiet uz JSON, izmantojot to_json() ar index=False
json_skills_data= prasmes_df.toPandas().to_json(index=False,orient= 'šķelšanās' )
drukāt (json_skills_data)
Izvade:
{ 'id' :{ '0' : 123 , '1' : 112 , '2' : 153 }, 'persona' :{ '0' : 'Mīļā' , '1' : 'Mouni' , '2' : 'Tulasi' }, 'balva' :{ '0' : 25 000 , '1' : 2000. gads , '2' : 1200 }, 'prasme' :{ '0' : 'glezna' , '1' : 'dejot' , '2' : 'lasīšana' }}{ 'kolonnas' :[ 'id' , 'persona' , 'balva' , 'prasme' ], 'dati' :[[ 123 , 'Mīļā' , 25 000 , 'glezna' ],[ 112 , 'Mouni' , 2000. gads , 'dejot' ],[ 153 , 'Tulasi' , 1200 , 'lasīšana' ]]
PySpark DataFrame uz JSON, izmantojot ToJSON()
Metode toJSON() tiek izmantota, lai PySpark DataFrame pārveidotu par JSON objektu. Būtībā tas atgriež JSON virkni, kuru ieskauj saraksts. The ['{column:value,…}',…. ] ir formāts, ko atgriež šī funkcija. Šeit katra rinda no PySpark DataFrame tiek atgriezta kā vārdnīca ar kolonnas nosaukumu kā atslēgu.
Sintakse:
dataframe_object.toJSON()Var būt iespējams nodot tādus parametrus kā indekss, kolonnu etiķetes un datu tips.
Piemērs:
Izveidojiet “skills_df” PySpark DataFrame ar 5 rindām un 4 kolonnām. Konvertējiet šo DataFrame uz JSON, izmantojot metodi toJSON().
importēt pysparkno pyspark.sql importēt SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()
# prasmju dati ar 5 rindām un 4 kolonnām
prasmes =[{ 'id' : 123 , 'persona' : 'Mīļā' , 'prasme' : 'glezna' , 'balva' : 25 000 },
{ 'id' : 112 , 'persona' : 'Mouni' , 'prasme' : 'mūzika/deja' , 'balva' : 2000. gads },
{ 'id' : 153 , 'persona' : 'Tulasi' , 'prasme' : 'lasīšana' , 'balva' : 1200 },
{ 'id' : 173 , 'persona' : 'skrēja' , 'prasme' : 'mūzika' , 'balva' : 2000. gads },
{ 'id' : 43 , 'persona' : 'Kamala' , 'prasme' : 'lasīšana' , 'balva' : 10 000 }
]
# izveidojiet prasmju datu rāmi no iepriekšminētajiem datiem
Skills_df = linuxhint_spark_app.createDataFrame(skills)
# Faktiskie prasmju dati
prasmes_df.show()
# Konvertēt uz JSON masīvu
json_skills_data = prasmes_df.toJSON().collect()
drukāt (json_skills_data)
Izvade:
+---+------+-----+-----------+| id|persona|balva| prasme|
+---+------+-----+-----------+
| 123 | Medus| 25 000 | glezna|
| 112 | Mouni| 2000. gads |mūzika/deja|
| 153 |Tulasi| 1200 | lasīšana|
| 173 | Skrēja| 2000. gads | mūzika|
| 43 |Kamala| 10 000 | lasīšana|
+---+------+-----+-----------+
[ '{'id':123,'person':'Honey','prize':25000,'skill':'glezniecība'}' , '{'id':112,'persona':'Mouni','balva':2000,'prasme':'mūzika/deja'}' , '{'id':153,'persona':'Tulasi','balva':1200,'prasme':'lasīšana'}' , '{'id':173,'person':'Ran','prize':2000,'skill':'mūzika'}' , '{'id':43,'persona':'Kamala','balva':10000,'prasme':'lasīšana'}' ]
PySpark DataFrame ir 5 rindas. Visas šīs 5 rindas tiek atgrieztas kā virkņu vārdnīca, kas ir atdalīta ar komatu.
PySpark DataFrame uz JSON, izmantojot Write.json()
Pakalpojumā PySpark ir pieejama metode write.json(), kas raksta/saglabā PySpark DataFrame JSON failā. Tas izmanto faila nosaukumu/ceļu kā parametru. Būtībā tas atgriež JSON vairākos failos (sadalītajos failos). Lai tos visus apvienotu vienā failā, mēs varam izmantot coalesce() metodi.
Sintakse:
dataframe_object.coalesce( 1 ).write.json('faila_nosaukums')- Pievienošanas režīms - dataframe_object.write.mode('pievienot').json('faila_nosaukums')
- Pārrakstīšanas režīms - dataframe_object.write.mode('pārrakstīt').json('faila_nosaukums')
Var būt iespējams pievienot/pārrakstīt esošo JSON. Izmantojot write.mode(), mēs varam pievienot datus, nododot “append”, vai pārrakstīt esošos JSON datus, nododot šai funkcijai “overwrite”.
1. piemērs:
Izveidojiet “skills_df” PySpark DataFrame ar 3 rindām un 4 kolonnām. Ierakstiet šo DataFrame JSON.
importēt pysparkimportēt pandas
no pyspark.sql importēt SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()
# prasmju dati ar 3 rindām un 4 kolonnām
prasmes =[{ 'id' : 123 , 'persona' : 'Mīļā' , 'prasme' : 'glezna' , 'balva' : 25 000 },
{ 'id' : 112 , 'persona' : 'Mouni' , 'prasme' : 'dejot' , 'balva' : 2000. gads },
{ 'id' : 153 , 'persona' : 'Tulasi' , 'prasme' : 'lasīšana' , 'balva' : 1200 }
]
# izveidojiet prasmju datu rāmi no iepriekšminētajiem datiem
Skills_df = linuxhint_spark_app.createDataFrame(skills)
# write.json()
prasmes_df.coalesce( 1 ).write.json( 'skills_data' )
JSON fails:
Mēs redzam, ka mapē skill_data ir ietverti sadalītie JSON dati.
Atvērsim JSON failu. Mēs redzam, ka visas PySpark DataFrame rindas tiek pārveidotas par JSON.
PySpark DataFrame ir 5 rindas. Visas šīs 5 rindas tiek atgrieztas kā virkņu vārdnīca, kas ir atdalīta ar komatu.
2. piemērs:
Izveidojiet “skills2_df” PySpark DataFrame ar vienu rindu. Pievienojiet vienu rindu iepriekšējam JSON failam, norādot režīmu kā “pievienot”.
importēt pysparkimportēt pandas
no pyspark.sql importēt SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()
prasmes2 =[{ 'id' : 78 , 'persona' : 'Mērija' , 'prasme' : 'jāšana' , 'balva' : 8960 }
]
# izveidojiet prasmju datu rāmi no iepriekšminētajiem datiem
Skills2_df = linuxhint_spark_app.createDataFrame(skills2)
# write.json() ar pievienošanas režīmu.
prasmes2_df.write.mode( 'pievienot' .json( 'skills_data' )
JSON fails:
Mēs varam redzēt sadalītos JSON failus. Pirmajā failā ir pirmie DataFrame ieraksti, bet otrajā failā ir otrais DataFrame ieraksts.
Secinājums
Ir trīs dažādi veidi, kā pārvērst PySpark DataFrame par JSON. Pirmkārt, mēs apspriedām metodi to_json (), kas pārveido par JSON, pārvēršot PySpark DataFrame par Pandas DataFrame ar dažādiem piemēriem, ņemot vērā dažādus parametrus. Tālāk mēs izmantojām toJSON () metodi. Visbeidzot, mēs uzzinājām, kā izmantot funkciju write.json(), lai PySpark DataFrame rakstītu JSON. Ar šo funkciju ir iespējama pievienošana un pārrakstīšana.