U ovom vodiču ćemo se uglavnom usredotočiti na čitanje/učitavanje datoteke parketa u PySpark DataFrame/SQL pomoću funkcije read.parquet() koja je dostupna u klasi pyspark.sql.DataFrameReader.
Tema sadržaja:
Pročitajte datoteku parketa u PySpark DataFrame
Pročitajte datoteku parketa u PySpark SQL
Pyspark.sql.DataFrameReader.parquet()
Ova se funkcija koristi za čitanje datoteke parketa i njezino učitavanje u PySpark DataFrame. Uzima put/naziv datoteke parketa. Možemo jednostavno koristiti funkciju read.parquet() jer je to generička funkcija.
Sintaksa:
Pogledajmo sintaksu read.parquet():
spark_app.read.parquet(file_name.parquet/put)Prvo instalirajte PySpark modul pomoću naredbe pip:
pip instaliraj pyspark
Nabavite turpiju za parket
Za čitanje parket-turpije potrebni su vam podaci u kojima je parket-turpija generirana iz tih podataka. U ovom ćemo dijelu vidjeti kako generirati datoteku parketa iz PySpark DataFramea.
Kreirajmo PySpark DataFrame s 5 zapisa i zapišimo to u datoteku parketa 'industry_parquet'.
uvoz pysparkiz pyspark.sql import SparkSession,Row
linuxhint_spark_app = SparkSession.builder.appName( 'Savjet za Linux' ).getOrCreate()
# kreirajte podatkovni okvir koji pohranjuje pojedinosti o industriji
industrija_df = linuxhint_spark_app.createDataFrame([Red(Tip= 'Poljoprivreda' ,Površina= 'SAD' ,
Ocjena= 'vruće' ,Ukupno_zaposlenih= 100 ),
Redak(Tip= 'Poljoprivreda' ,Površina= 'Indija' ,Ocjena= 'vruće' ,Ukupno_zaposlenih= 200 ),
Redak(Tip= 'Razvoj' ,Površina= 'SAD' ,Ocjena= 'Toplo' ,Ukupno_zaposlenih= 100 ),
Redak(Tip= 'Obrazovanje' ,Površina= 'SAD' ,Ocjena= 'Cool' ,Ukupno_zaposlenih= 400 ),
Redak(Tip= 'Obrazovanje' ,Površina= 'SAD' ,Ocjena= 'Toplo' ,Ukupno_zaposlenih= dvadeset )
])
# Stvarni DataFrame
industrija_df.show()
# Zapišiteindustriju_df u datoteku parketa
industrija_df.coalesce( 1 ).piši.parket( 'industrija_parket' )
Izlaz:
Ovo je DataFrame koji sadrži 5 zapisa.
Za prethodni DataFrame kreira se parketna datoteka. Ovdje je naziv naše datoteke s ekstenzijom 'part-00000-ff70f69d-f1fb-4450-b4b4-dfd5a8d6c7ad-c000.snappy.parquet'. Ovu datoteku koristimo u cijelom vodiču.
Pročitajte datoteku parketa u PySpark DataFrame
Imamo turpiju za parket. Pročitajmo ovu datoteku pomoću funkcije read.parquet() i učitajmo je u PySpark DataFrame.
uvoz pysparkiz pyspark.sql import SparkSession,Row
linuxhint_spark_app = SparkSession.builder.appName( 'Savjet za Linux' ).getOrCreate()
# Pročitajte datoteku parketa u objekt dataframe_from_parquet.
dataframe_from_parquet=linuxhint_spark_app.read.parquet( 'part-00000-ff70f69d-f1fb-4450-b4b4-dfd5a8d6c7ad-c000.snappy.parquet' )
# Prikaži dataframe_from_parquet-DataFrame
dataframe_from_parquet.show()
Izlaz:
DataFrame prikazujemo pomoću metode show() koja je kreirana iz datoteke parketa.
SQL upiti s datotekom parketa
Nakon učitavanja u DataFrame, moguće je izraditi SQL tablice i prikazati podatke koji su prisutni u DataFrameu. Moramo kreirati PRIVREMENI PRIKAZ i upotrijebiti SQL naredbe za vraćanje zapisa iz DataFramea koji je kreiran iz datoteke parketa.
Primjer 1:
Stvorite privremeni prikaz pod nazivom 'Sektori' i koristite naredbu SELECT za prikaz zapisa u DataFrameu. Možete se pozvati na ovo tutorial koji objašnjava kako stvoriti VIEW u Spark – SQL.
uvoz pysparkiz pyspark.sql import SparkSession,Row
linuxhint_spark_app = SparkSession.builder.appName( 'Savjet za Linux' ).getOrCreate()
# Pročitajte datoteku parketa u objekt dataframe_from_parquet.
dataframe_from_parquet=linuxhint_spark_app.read.parquet( 'part-00000-ff70f69d-f1fb-4450-b4b4-dfd5a8d6c7ad-c000.snappy.parquet' )
# Napravite pogled iz gornje datoteke parketa pod nazivom - 'Sektori'
dataframe_from_parquet.createOrReplaceTempView( 'Sektori' )
# Upit za prikaz svih zapisa iz sektora
linuxhint_spark_app.sql( 'odaberite * iz sektora' ).pokazati()
Izlaz:
Primjer 2:
Koristeći prethodni VIEW, napišite SQL upit:
- Za prikaz svih zapisa iz sektora koji pripadaju “Indiji”.
- Za prikaz svih zapisa iz Sektora sa zaposlenikom većim od 100.
linuxhint_spark_app.sql( 'odaberite * iz sektora gdje je područje='Indija'' ).pokazati()
# Upit za prikaz svih zapisa iz sektora s više od 100 zaposlenika
linuxhint_spark_app.sql( 'odaberite * iz Sektora gdje Ukupno_zaposlenih>100' ).pokazati()
Izlaz:
Postoji samo jedan zapis s područjem koje je 'Indija' i dva zapisa s zaposlenicima većim od 100.
Pročitajte datoteku parketa u PySpark SQL
Prvo moramo kreirati VIEW pomoću naredbe CREATE. Koristeći ključnu riječ “path” unutar SQL upita, možemo pročitati datoteku parketa u Spark SQL. Nakon staze, moramo navesti naziv/lokaciju datoteke.
Sintaksa:
spark_app.sql( 'KREIRAJ PRIVREMENI PRIKAZ naziv_pogleda KORIŠĆENJEM OPCIJA parketa (staza ' naziv_datoteke.parket ')' )Primjer 1:
Napravite privremeni prikaz pod nazivom “Sector2” i u njemu pročitajte datoteku parketa. Pomoću funkcije sql() napišite upit za odabir za prikaz svih zapisa koji su prisutni u prikazu.
uvoz pysparkiz pyspark.sql import SparkSession,Row
linuxhint_spark_app = SparkSession.builder.appName( 'Savjet za Linux' ).getOrCreate()
# Pročitajte datoteku parketa u Spark-SQL
linuxhint_spark_app.sql( 'KREIRAJ PRIVREMENI PRIKAZ Sektor2 KORIŠĆENJEM OPCIJA parketa (staza ' dio-00000-ff70f69d-f1fb- 4450 -b4b4-dfd5a8d6c7ad-c000.snappy.parquet ')' )
# Upit za prikaz svih zapisa iz Sector2
linuxhint_spark_app.sql( 'odaberi * iz sektora 2' ).pokazati()
Izlaz:
Primjer 2:
Upotrijebite prethodni PREGLED i napišite upit za prikaz svih zapisa s ocjenom “Hot” ili “Cool”.
# Upit za prikaz svih zapisa iz sektora 2 s ocjenom - vruće ili hladno.linuxhint_spark_app.sql( 'odaberite * iz Sektora 2 gdje je Ocjena='Hot' ILI Ocjena='Cool'' ).pokazati()
Izlaz:
Postoje tri zapisa s ocjenom 'Hot' ili 'Cool'.
Zaključak
U PySparku funkcija write.parquet() upisuje DataFrame u datoteku parketa. Funkcija read.parquet() čita datoteku parketa u PySpark DataFrame ili bilo koji drugi DataSource. Naučili smo kako čitati datoteku parketa u PySpark DataFrame iu PySpark tablicu. Kao dio ovog vodiča, također smo razgovarali o tome kako stvoriti tablice iz PySpark DataFramea i filtrirati podatke pomoću WHERE klauzule.