Конвертовање ПиСпарк ДатаФраме у ЈСОН

Konvertovane Pispark Dataframe U Json



Пренос структурираних података помоћу ЈСОН-а је могућ и такође троши мало меморије. У поређењу са ПиСпарк РДД или ПиСпарк ДатаФраме, ЈСОН троши мало меморије и серијализације што је могуће са ЈСОН-ом. У могућности смо да конвертујемо ПиСпарк ДатаФраме у ЈСОН помоћу методе писпарк.скл.ДатаФрамеВритер.јсон(). Осим тога, постоје још два начина претварања ДатаФраме-а у ЈСОН.

Тема садржаја:

Хајде да размотримо једноставан ПиСпарк ДатаФраме у свим примерима и претворимо га у ЈСОН користећи поменуте функције.







Потребан модул:

Инсталирајте ПиСпарк библиотеку у своје окружење ако још није инсталирана. Можете се обратити следећој команди да бисте је инсталирали:



пип инсталл писпарк

ПиСпарк ДатаФраме у ЈСОН користећи То_јсон() са ТоПандас()

Метода то_јсон() доступна је у Пандас модулу који конвертује Пандас ДатаФраме у ЈСОН. Ову методу можемо да искористимо ако конвертујемо наш ПиСпарк ДатаФраме у Пандас ДатаФраме. Да би се ПиСпарк ДатаФраме претворио у Пандас ДатаФраме, користи се метода тоПандас(). Хајде да видимо синтаксу то_јсон() заједно са њеним параметрима.



Синтакса:





датафраме_објецт.тоПандас().то_јсон(ориент,индек,...)
  1. Ориент се користи за приказ конвертованог ЈСОН-а као жељеног формата. Потребно је „записе”, „табелу”, „вредности”, „колоне”, „индекс”, „подела”.
  2. Индекс се користи за укључивање/уклањање индекса из конвертованог ЈСОН стринга. Ако је подешено на „Труе“, индекси се приказују. У супротном, индекси неће бити приказани ако је оријентација „раздвојена“ или „табела“.

Пример 1: Оријентирајте се као „записи“

Направите „скиллс_дф“ ПиСпарк ДатаФраме са 3 реда и 4 колоне. Конвертујте овај ДатаФраме у ЈСОН тако што ћете навести оријент параметар као „записи“.

импорт писпарк

увоз панде

из писпарк.скл импорт СпаркСессион

линукхинт_спарк_апп = СпаркСессион.буилдер.аппНаме( 'Линук савет' ).гетОрЦреате()

Подаци о # вештинама са 3 реда и 4 колоне

вештине =[{ 'ид' : 123 , 'особа' : 'Душо' , 'вештина' : 'сликање' , 'награда' : 25000 },

{ 'ид' : 112 , 'особа' : 'Моуни' , 'вештина' : 'плес' , 'награда' : 2000 },

{ 'ид' : 153 , 'особа' : 'Туласи' , 'вештина' : 'читање' , 'награда' : 1200 }

]

# креирајте оквир података о вештинама од горњих података

скиллс_дф = линукхинт_спарк_апп.цреатеДатаФраме(скиллс)

# Подаци о стварним вештинама

скиллс_дф.схов()

# Конвертујте у ЈСОН користећи то_јсон() са оријентом као 'записима'

јсон_скиллс_дата = скиллс_дф.тоПандас().то_јсон(ориент= 'записи' )

принт(јсон_скиллс_дата)

Излаз:



+---+------+-----+--------+

| ид|особа|награда| вештина|

+---+------+-----+--------+

| 123 | Хонеи| 25000 |сликање|

| 112 | Моуни| 2000 | данце|

| 153 |Туласи| 1200 | читање|

+---+------+-----+--------+

[{ 'ид' : 123 , 'особа' : 'Душо' , 'награда' : 25000 , 'вештина' : 'сликање' },{ 'ид' : 112 , 'особа' : 'Моуни' , 'награда' : 2000 , 'вештина' : 'плес' },{ 'ид' : 153 , 'особа' : 'Туласи' , 'награда' : 1200 , 'вештина' : 'читање' }]

Можемо видети да је ПиСпарк ДатаФраме конвертован у ЈСОН низ са речником вредности. Овде кључеви представљају име колоне, а вредност представља вредност реда/ћелије у ПиСпарк ДатаФраме-у.

Пример 2: Оријентација као „Сплит“

ЈСОН формат који враћа „сплит“ оријент укључује називе колона које имају листу колона, листу индекса и листу података. Следи формат „сплит” оријента.

# Претворите у ЈСОН користећи то_јсон() са оријентацијом као 'сплит'

јсон_скиллс_дата = скиллс_дф.тоПандас().то_јсон(ориент= 'разделити' )

принт(јсон_скиллс_дата)

Излаз:

{ 'колоне' :[ 'ид' , 'особа' , 'награда' , 'вештина' ], 'индекс' :[ 0 , 1 , 2 ], 'подаци' :[[ 123 , 'Душо' , 25000 , 'сликање' ],[ 112 , 'Моуни' , 2000 , 'плес' ],[ 153 , 'Туласи' , 1200 , 'читање' ]]}

Пример 3: Оријентирајте као „индекс“

Овде се сваки ред из ПиСпарк ДатаФраме-а повлачи у облику речника са кључем као именом колоне. За сваки речник, позиција индекса је наведена као кључ.

# Конвертујте у ЈСОН користећи то_јсон() са оријентом као 'индексом'

јсон_скиллс_дата = скиллс_дф.тоПандас().то_јсон(ориент= 'индекс' )

принт(јсон_скиллс_дата)

Излаз:

{ '0' :{ 'ид' : 123 , 'особа' : 'Душо' , 'награда' : 25000 , 'вештина' : 'сликање' }, '1' :{ 'ид' : 112 , 'особа' : 'Моуни' , 'награда' : 2000 , 'вештина' : 'плес' }, '2' :{ 'ид' : 153 , 'особа' : 'Туласи' , 'награда' : 1200 , 'вештина' : 'читање' }}

Пример 4: Оријентација као „колоне“

Колоне су кључ за сваки запис. Свака колона садржи речник који узима вредности колона са бројевима индекса.

# Конвертујте у ЈСОН користећи то_јсон() са оријентом као 'колоне'

јсон_скиллс_дата = скиллс_дф.тоПандас().то_јсон(ориент= 'колоне' )

принт(јсон_скиллс_дата)

Излаз:

{ 'ид' :{ '0' : 123 , '1' : 112 , '2' : 153 }, 'особа' :{ '0' : 'Душо' , '1' : 'Моуни' , '2' : 'Туласи' }, 'награда' :{ '0' : 25000 , '1' : 2000 , '2' : 1200 }, 'вештина' :{ '0' : 'сликање' , '1' : 'плес' , '2' : 'читање' }}

Пример 5: Оријентација као „вредности“

Ако су вам потребне само вредности у ЈСОН-у, можете ићи на оријентацију „вредности“. Приказује сваки ред на листи. Коначно, све листе се чувају у листи. Овај ЈСОН је типа угнежђене листе.

# Претворите у ЈСОН користећи то_јсон() са ориентом као 'вредностима'

јсон_скиллс_дата = скиллс_дф.тоПандас().то_јсон(ориент= 'вредности' )

принт(јсон_скиллс_дата)

Излаз:

[[ 123 , 'Душо' , 25000 , 'сликање' ],[ 112 , 'Моуни' , 2000 , 'плес' ],[ 153 , 'Туласи' , 1200 , 'читање' ]]

Пример 6: Оријентација као „сто“

Оријентација „табела“ враћа ЈСОН који укључује шему са именима поља заједно са типовима података колона, индексом као примарним кључем и Пандас верзијом. Имена колона са вредностима се приказују као „подаци“.

# Конвертујте у ЈСОН користећи то_јсон() са оријентом као 'табела'

јсон_скиллс_дата = скиллс_дф.тоПандас().то_јсон(ориент= 'сто' )

принт(јсон_скиллс_дата)

Излаз:

{ 'шема' :{ 'поља' :[{ 'име' : 'индекс' , 'тип' : 'цео број' },{ 'име' : 'ид' , 'тип' : 'цео број' },{ 'име' : 'особа' , 'тип' : 'низ' },{ 'име' : 'награда' , 'тип' : 'цео број' },{ 'име' : 'вештина' , 'тип' : 'низ' }], 'Примарни кључ' :[ 'индекс' ], 'пандас_версион' : '1.4.0' }, 'подаци' :[{ 'индекс' : 0 , 'ид' : 123 , 'особа' : 'Душо' , 'награда' : 25000 , 'вештина' : 'сликање' },{ 'индекс' : 1 , 'ид' : 112 , 'особа' : 'Моуни' , 'награда' : 2000 , 'вештина' : 'плес' },{ 'индекс' : 2 , 'ид' : 153 , 'особа' : 'Туласи' , 'награда' : 1200 , 'вештина' : 'читање' }]}

Пример 7: Са параметром индекса

Прво, прослеђујемо параметар индекса тако што га постављамо на „Труе“. Видећете за сваку вредност колоне да се позиција индекса враћа као кључ у речнику.

У другом излазу, само се имена колона („колоне“) и записи („подаци“) враћају без позиција индекса пошто је индекс постављен на „Фалсе“.

# Конвертујте у ЈСОН користећи то_јсон() са индек=Труе

јсон_скиллс_дата = скиллс_дф.тоПандас().то_јсон(индек=Труе)

принт(јсон_скиллс_дата, ' ' )

# Конвертујте у ЈСОН користећи то_јсон() са индек=Фалсе

јсон_скиллс_дата= скиллс_дф.тоПандас().то_јсон(индек=Фалсе,ориент= 'разделити' )

принт(јсон_скиллс_дата)

Излаз:

{ 'ид' :{ '0' : 123 , '1' : 112 , '2' : 153 }, 'особа' :{ '0' : 'Душо' , '1' : 'Моуни' , '2' : 'Туласи' }, 'награда' :{ '0' : 25000 , '1' : 2000 , '2' : 1200 }, 'вештина' :{ '0' : 'сликање' , '1' : 'плес' , '2' : 'читање' }}

{ 'колоне' :[ 'ид' , 'особа' , 'награда' , 'вештина' ], 'подаци' :[[ 123 , 'Душо' , 25000 , 'сликање' ],[ 112 , 'Моуни' , 2000 , 'плес' ],[ 153 , 'Туласи' , 1200 , 'читање' ]]

ПиСпарк ДатаФраме у ЈСОН користећи ТоЈСОН()

Метода тоЈСОН() се користи за претварање ПиСпарк ДатаФраме у ЈСОН објекат. У основи, враћа ЈСОН стринг који је окружен листом. Тхе [‘{колона:вредност,…}’,…. ] је формат који враћа ова функција. Овде се сваки ред из ПиСпарк ДатаФраме-а враћа као речник са именом колоне као кључем.

Синтакса:

датафраме_објецт.тоЈСОН()

Може бити могуће проследити параметре као што су индекс, ознаке колона и тип података.

Пример:

Направите „скиллс_дф“ ПиСпарк ДатаФраме са 5 редова и 4 колоне. Конвертујте овај ДатаФраме у ЈСОН помоћу методе тоЈСОН().

импорт писпарк

из писпарк.скл импорт СпаркСессион

линукхинт_спарк_апп = СпаркСессион.буилдер.аппНаме( 'Линук савет' ).гетОрЦреате()

Подаци о # вештинама са 5 редова и 4 колоне

вештине =[{ 'ид' : 123 , 'особа' : 'Душо' , 'вештина' : 'сликање' , 'награда' : 25000 },

{ 'ид' : 112 , 'особа' : 'Моуни' , 'вештина' : 'музика/плес' , 'награда' : 2000 },

{ 'ид' : 153 , 'особа' : 'Туласи' , 'вештина' : 'читање' , 'награда' : 1200 },

{ 'ид' : 173 , 'особа' : 'трчао' , 'вештина' : 'музика' , 'награда' : 2000 },

{ 'ид' : 43 , 'особа' : 'Камала' , 'вештина' : 'читање' , 'награда' : 10000 }

]

# креирајте оквир података о вештинама од горњих података

скиллс_дф = линукхинт_спарк_апп.цреатеДатаФраме(скиллс)

# Подаци о стварним вештинама

скиллс_дф.схов()

# Претвори у ЈСОН низ

јсон_скиллс_дата = скиллс_дф.тоЈСОН().цоллецт()

принт(јсон_скиллс_дата)

Излаз:

+---+------+-----+----------+

| ид|особа|награда| вештина|

+---+------+-----+----------+

| 123 | Хонеи| 25000 | сликарство|

| 112 | Моуни| 2000 |музика/плес|

| 153 |Туласи| 1200 | читање|

| 173 | Ран| 2000 | музика|

| 43 |Камала| 10000 | читање|

+---+------+-----+----------+

[ '{'ид':123,'персон':'Душо','призе':25000,'скилл':'паинтинг'}' , '{'ид':112,'персон':'Моуни','призе':2000,'скилл':'мусиц/данце'}' , '{'ид':153,'персон':'Туласи','призе':1200,'скилл':'реадинг'}' , '{'ид':173,'персон':'Ран','призе':2000,'скилл':'мусиц'}' , '{'ид':43,'персон':'Камала','призе':10000,'скилл':'реадинг'}' ]

У ПиСпарк ДатаФраме-у постоји 5 редова. Свих ових 5 редова се враћају као речник низова који су раздвојени зарезом.

ПиСпарк ДатаФраме у ЈСОН користећи Врите.јсон()

Метод врите.јсон() доступан је у ПиСпарк-у који уписује/чува ПиСпарк ДатаФраме у ЈСОН датотеку. Узима име/путање датотеке као параметар. У основи, враћа ЈСОН у више датотека (партициониране датотеке). Да бисмо их све спојили у једну датотеку, можемо користити методу цоалесце().

Синтакса:

датафраме_објецт.цоалесце( 1 ).врите.јсон(‘име_датотеке’)
  1. Режим додавања – датафраме_објецт.врите.моде(‘аппенд’).јсон(‘филе_наме’)
  2. Режим преписивања – датафраме_објецт.врите.моде(‘оверврите’).јсон(‘филе_наме’)

Могуће је додати/заменити постојећи ЈСОН. Користећи врите.моде(), можемо додати податке прослеђивањем „аппенд“ или преписати постојеће ЈСОН податке тако што ћемо проследити „оверврите“ овој функцији.

Пример 1:

Направите „скиллс_дф“ ПиСпарк ДатаФраме са 3 реда и 4 колоне. Напишите овај ДатаФраме у ЈСОН.

импорт писпарк

увоз панде

из писпарк.скл импорт СпаркСессион

линукхинт_спарк_апп = СпаркСессион.буилдер.аппНаме( 'Линук савет' ).гетОрЦреате()

Подаци о # вештинама са 3 реда и 4 колоне

вештине =[{ 'ид' : 123 , 'особа' : 'Душо' , 'вештина' : 'сликање' , 'награда' : 25000 },

{ 'ид' : 112 , 'особа' : 'Моуни' , 'вештина' : 'плес' , 'награда' : 2000 },

{ 'ид' : 153 , 'особа' : 'Туласи' , 'вештина' : 'читање' , 'награда' : 1200 }

]

# креирајте оквир података о вештинама од горњих података

скиллс_дф = линукхинт_спарк_апп.цреатеДатаФраме(скиллс)

# врите.јсон()

скиллс_дф.цоалесце( 1 ).врите.јсон( 'скиллс_дата' )

ЈСОН датотека:

Можемо видети да фасцикла скиллс_дата укључује партиционисане ЈСОН податке.

Хајде да отворимо ЈСОН датотеку. Видимо да су сви редови из ПиСпарк ДатаФраме-а конвертовани у ЈСОН.

У ПиСпарк ДатаФраме-у постоји 5 редова. Свих ових 5 редова се враћају као речник низова који су раздвојени зарезом.

Пример 2:

Направите „скиллс2_дф“ ПиСпарк ДатаФраме са једним редом. Додајте један ред претходној ЈСОН датотеци тако што ћете навести режим као „додати“.

импорт писпарк

увоз панде

из писпарк.скл импорт СпаркСессион

линукхинт_спарк_апп = СпаркСессион.буилдер.аппНаме( 'Линук савет' ).гетОрЦреате()

вештине2 =[{ 'ид' : 78 , 'особа' : 'Мари' , 'вештина' : 'јахање' , 'награда' : 8960 }

]

# креирајте оквир података о вештинама од горњих података

скиллс2_дф ​​= линукхинт_спарк_апп.цреатеДатаФраме(скиллс2)

# врите.јсон() са режимом додавања.

скиллс2_дф.врите.моде( 'додати' ).јсон( 'скиллс_дата' )

ЈСОН датотека:

Можемо видети подељене ЈСОН датотеке. Прва датотека садржи прве ДатаФраме записе, а друга датотека садржи други ДатаФраме запис.

Закључак

Постоје три различита начина да се ПиСпарк ДатаФраме претвори у ЈСОН. Прво смо разговарали о методи то_јсон() која се претвара у ЈСОН претварањем ПиСпарк ДатаФраме у Пандас ДатаФраме са различитим примерима узимајући у обзир различите параметре. Затим смо користили методу тоЈСОН(). На крају, научили смо како да користимо функцију врите.јсон() за писање ПиСпарк ДатаФраме у ЈСОН. Са овом функцијом могуће је додавање и преписивање.