Како читати и писати податке табеле у ПиСпарк-у

Kako Citati I Pisati Podatke Tabele U Pispark U



Обрада података у ПиСпарк-у је бржа ако се подаци учитавају у облику табеле. Са овим, користећи СКЛ изразе, обрада ће бити брза. Дакле, претварање ПиСпарк ДатаФраме/РДД у табелу пре слања на обраду је бољи приступ. Данас ћемо видети како да прочитамо податке табеле у ПиСпарк ДатаФраме, упишемо ПиСпарк ДатаФраме у табелу и убацимо нови ДатаФраме у постојећу табелу користећи уграђене функције. Идемо!

Писпарк.скл.ДатаФрамеВритер.савеАсТабле()

Прво ћемо видети како да упишемо постојећи ПиСпарк ДатаФраме у табелу помоћу функције врите.савеАсТабле(). Потребно је име табеле и други опциони параметри као што су режими, партионБи, итд., да би се ДатаФраме уписивао у табелу. Чува се као датотека за паркет.

Синтакса:







датафраме_обј.врите.савеАсТабле(путања/име_табеле,режим,партитионБи,…)
  1. Табле_наме је име табеле која је креирана из датафраме_обј.
  2. Можемо додати/преписати податке табеле помоћу параметра моде.
  3. ПартитионБи узима једну/више колона да креира партиције на основу вредности у овим колонама.

Пример 1:

Направите ПиСпарк ДатаФраме са 5 редова и 4 колоне. Запишите овај оквир података у табелу под називом „Агри_Табле1“.



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

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

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

# пољопривредни подаци са 5 редова и 5 колона

агри =[{ 'Тло_Тип' : 'Црн' , 'Иригатион_аваилабилити' : 'Не' , 'Ацре' : 2500 , 'Соил_статус' : 'СУВ' ,
'држава' : 'САД' },

{ 'Тло_Тип' : 'Црн' , 'Иригатион_аваилабилити' : 'Да' , 'Ацре' : 3500 , 'Соил_статус' : 'Мокар' ,
'држава' : 'Индија' },

{ 'Тло_Тип' : 'црвено' , 'Иригатион_аваилабилити' : 'Да' , 'Ацре' : 210 , 'Соил_статус' : 'СУВ' ,
'држава' : 'УК' },

{ 'Тло_Тип' : 'Остало' , 'Иригатион_аваилабилити' : 'Не' , 'Ацре' : 1000 , 'Соил_статус' : 'Мокар' ,
'држава' : 'САД' },

{ 'Тло_Тип' : 'Песак' , 'Иригатион_аваилабилити' : 'Не' , 'Ацре' : 500 , 'Соил_статус' : 'СУВ' ,
'држава' : 'Индија' }]



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

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

агри_дф.схов()

# Упишите горњи ДатаФраме у табелу.

агри_дф.цоалесце( 1 ).врите.савеАсТабле( 'Агри_Табле1' )

Излаз:







Можемо видети да је једна датотека паркета креирана са претходним ПиСпарк подацима.



Пример 2:

Узмите у обзир претходни оквир података и запишите „Агри_Табле2“ у табелу тако што ћете поделити записе на основу вредности у колони „Цоунтри“.

# Упишите горњи ДатаФраме у табелу са параметром партитионБи

агри_дф.врите.савеАсТабле( 'Агри_Табле2' ,партитионБи=[ 'држава' ])

Излаз:

У колони „Земља“ постоје три јединствене вредности – „Индија“, „УК“ и „САД“. Дакле, створене су три партиције. Свака партиција садржи датотеке паркета.

Писпарк.скл.ДатаФрамеРеадер.табле()

Хајде да учитамо табелу у ПиСпарк ДатаФраме помоћу функције спарк.реад.табле(). Потребан је само један параметар који је име путање/табеле. Директно учитава табелу у ПиСпарк ДатаФраме и све СКЛ функције које су примењене на ПиСпарк ДатаФраме такође се могу применити на овај учитани ДатаФраме.

Синтакса:

спарк_апп.реад.табле(патх/’Табле_наме’)

У овом сценарију користимо претходну табелу која је креирана из ПиСпарк ДатаФраме-а. Уверите се да морате да примените претходне исечке кода сценарија у свом окружењу.

Пример:

Учитајте табелу „Агри_Табле1“ у ДатаФраме под називом „лоадед_дата“.

лоадед_дата = линукхинт_спарк_апп.реад.табле( 'Агри_Табле1' )

лоадед_дата.схов()

Излаз:

Можемо видети да је табела учитана у ПиСпарк ДатаФраме.

Извршавање СКЛ упита

Сада извршавамо неке СКЛ упите на учитаном ДатаФраме-у користећи функцију спарк.скл().

# Користите команду СЕЛЕЦТ да прикажете све колоне из горње табеле.

линукхинт_спарк_апп.скл( „СЕЛЕЦТ * фром Агри_Табле1“ ).Прикажи()

# Где клаузула

линукхинт_спарк_апп.скл( 'СЕЛЕЦТ * фром Агри_Табле1 ВХЕРЕ Соил_статус='Дри'' ).Прикажи()

линукхинт_спарк_апп.скл( „СЕЛЕЦТ * фром Агри_Табле1 ВХЕРЕ Ацрес > 2000“ ).Прикажи()

Излаз:

  1. Први упит приказује све колоне и записе из ДатаФраме-а.
  2. Други упит приказује записе на основу колоне „Соил_статус“. Постоје само три записа са елементом „Суво“.
  3. Последњи упит враћа два записа са „Ацрес“ који су већи од 2000.

Писпарк.скл.ДатаФрамеВритер.инсертИнто()

Користећи функцију инсертИнто(), можемо додати ДатаФраме у постојећу табелу. Ову функцију можемо користити заједно са селецтЕкпр() да дефинишемо називе колона и затим је убацимо у табелу. Ова функција такође узима таблеНаме као параметар.

Синтакса:

ДатаФраме_обј.врите.инсертИнто(’Име_табеле’)

У овом сценарију користимо претходну табелу која је креирана из ПиСпарк ДатаФраме-а. Уверите се да морате да примените претходне исечке кода сценарија у свом окружењу.

Пример:

Направите нови ДатаФраме са два записа и уметните их у табелу „Агри_Табле1“.

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

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

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

# пољопривредни подаци са 2 реда

агри =[{ 'Тло_Тип' : 'Песак' , 'Иригатион_аваилабилити' : 'Не' , 'Ацре' : 2500 , 'Соил_статус' : 'СУВ' ,
'држава' : 'САД' },

{ 'Тло_Тип' : 'Песак' , 'Иригатион_аваилабилити' : 'Не' , 'Ацре' : 1200 , 'Соил_статус' : 'Мокар' ,
'држава' : 'Јапан' }]

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

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

агри_дф2.схов()

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

агри_дф2.селецтЕкпр( 'Ацре' , 'земља' , „Доступност_наводњавања“ , 'Тло_Тип' ,
'Соил_статус' ).врите.инсертИнто( 'Агри_Табле1' )

# Прикажи коначну Агри_Табелу1

линукхинт_спарк_апп.скл( „СЕЛЕЦТ * фром Агри_Табле1“ ).Прикажи()

Излаз:

Сада, укупан број редова који су присутни у ДатаФраме-у је 7.

Закључак

Сада разумете како да запишете ПиСпарк ДатаФраме у табелу помоћу функције врите.савеАсТабле(). Узима име табеле и друге опционе параметре. Затим смо ову табелу учитали у ПиСпарк ДатаФраме помоћу функције спарк.реад.табле(). Потребан је само један параметар који је име путање/табеле. Ако желите да додате нови ДатаФраме у постојећу табелу, користите функцију инсертИнто().