Pyspark.sql.DataFrameReader.csv()
Ang paraang ito ay ginagamit upang basahin ang data mula sa CSV file/s at iimbak ang mga ito sa PySpark DataFrame. Ito ay tumatagal ng mga opsyon habang nagbabasa ng CSV sa DataFrame. Tatalakayin natin ang iba't ibang mga opsyon na may mga halimbawa nang detalyado. Habang nagpapasa ng higit sa isang CSV file, mahalagang ipasa ang mga pangalan ng file na may extension sa isang listahan na pinaghihiwalay ng comma operator. Kung nagbabasa ka lamang ng isang CSV file, hindi na kailangang ibigay ang pangalan ng file sa isang listahan.
Syntax:
Isang file - spark_app.read.csv('file.csv', mga pagpipilian …)
Maramihang mga file – spark_app.read.csv([‘file1.csv’,’file2.csv’,…], mga opsyon…)
Posible ring paghiwalayin ang mga opsyon at pangalan ng file.
Isang file – spark_app.read.options(options…).csv(‘file.csv’)
Maramihang mga file – spark_app.read.options(options…).csv([‘file1.csv’,’file2.csv’,…])
I-install ang PySpark library bago ipatupad ang mga sumusunod na halimbawa.
pip install pyspark
Pagkatapos ng matagumpay na pag-install, makikita mo ang output tulad ng sumusunod:
Sitwasyon 1: Pagbabasa ng CSV File Header
Gumawa tayo ng CSV file na pinangalanang 'person_skill.csv' na may 5 record na ipinapakita sa sumusunod at i-load ito sa PySpark DataFrame:
Ang parameter ng header ay ginagamit upang tukuyin ang mga pangalan ng column sa PySpark DataFrame. Ito ay nangangailangan ng isang Boolean na halaga. Kung ito ay 'True', ang aktwal na mga pangalan ng column na umiiral sa CSV file ay tinukoy sa DataFrame, Kung hindi, ang c0, c1, c2... ay tinukoy at ang aktwal na mga pangalan ng column ay magiging isang row. Pinakamainam na i-set ang parameter ng header sa true.
Halimbawa 1: Header = Tama
import pysparkmula sa pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# I-load ang csv na pinangalanang - person_skill.csv sa mga kasanayan na may mga label ng column na may header
kasanayan = linuxhint_spark_app.read.csv( 'person_skill.csv' , header =Totoo)
# Ipakita ang DataFrame
skills.show()
Output:
Paliwanag:
Makikita natin na ang PySpark DataFrame ay nilikha mula sa CSV file na may mga tinukoy na column at row.
Gamitin ang sumusunod na command upang suriin ang mga column:
kasanayan.kolum
Halimbawa 2: Header = Mali
import pysparkmula sa pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# I-load ang csv na pinangalanang - person_skill.csv sa mga kasanayan na may mga label ng column na walang header
kasanayan = linuxhint_spark_app.read.csv( 'person_skill.csv' , header =Mali)
# Ipakita ang DataFrame
skills.show()
Output:
Paliwanag:
Makikita natin na ang PySpark DataFrame ay nilikha mula sa CSV file na walang umiiral na mga column.
Gayundin, ang mga umiiral na column ay iniimbak bilang mga row sa PySpark DataFrame.
kasanayan.kolum
Gamit ang Read.options.csv()
Ngayon, binabasa namin ang CSV file gamit ang read.options.csv() na paraan. Dito, kailangan nating ipasa ang mga opsyon tulad ng delimiter, header, atbp sa mga opsyon bilang mga argumento at pangalan ng file sa csv(). Ipasa natin ang parameter ng header sa pamamagitan ng pagtatakda nito sa 'True'.
Sitwasyon 1:
import pysparkmula sa pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# Paggamit ng read.options.csv()
kasanayan = linuxhint_spark_app.read. mga pagpipilian ( header =True).csv( 'person_skill.csv' )
# Ipakita ang DataFrame
skills.show()
Output:
Sitwasyon 2: Pagbasa ng CSV File Delimiter
Kinukuha ng delimiter parameter ang character na ginagamit upang paghiwalayin ang bawat field. Ito ay tumatagal ng kuwit (,) bilang default. Gamitin natin ang parehong CSV file na ginamit sa unang senaryo at ipasa ang kuwit (‘,’) bilang delimiter.
import pysparkmula sa pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# Paggamit ng read.options.csv() na may delimiter kasama ng header
kasanayan = linuxhint_spark_app.read. mga pagpipilian ( header =Totoo,delimiter= ',' ).csv( 'person_skill.csv' )
# Ipakita ang DataFrame
skills.show()
Output:
Pagbabasa ng Maramihang File
Hanggang ngayon, nagbabasa kami ng isang CSV file. Tingnan natin kung paano magbasa ng higit sa isang CSV file. Sa sitwasyong ito, ang mga row sa maraming file ay idinagdag sa isang PySpark DataFrame. Kailangan lang naming ipasa ang mga pangalan ng file sa isang listahan sa loob ng pamamaraan.
Halimbawa:
Hayaan ang mga sumusunod na CSV file na may pangalang 'person_skill.csv' at 'person_skill2.csv' na may sumusunod na data:
Basahin ang dalawang CSV file na ito at iimbak ang mga ito sa isang PySpark DataFrame.
import pysparkmula sa pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# Mag-load ng 2 csv file na pinangalanang - person_skill.csv at person_skill2.csv sa mga kasanayan na may mga label ng column na may header
kasanayan = linuxhint_spark_app.read.csv([ 'person_skill.csv' , 'person_skill2.csv' ],sep= ',' , header =Totoo)
skills.show()
Output:
Paliwanag:
Ang unang CSV ay mayroong 6 na record at ang pangalawang CSV ay mayroong 3 record. Makikita natin na unang na-load ang unang CSV sa DataFrame. Pagkatapos, na-load ang pangalawang CSV. Sa wakas, ang PySpark DataFrame ay mayroong 9 na tala.
Konklusyon
Ang pagbabasa ng CSV sa PySpark DataFrame ay medyo simple gamit ang pyspark.sql.DataFrameReader.csv() na paraan. Posibleng ipasa ang mga parameter ng header at delimiter sa paraang ito upang matukoy ang mga column at ang format. Sinusuportahan din ng PySpark ang pagbabasa ng maraming CSV file nang sabay-sabay gamit ang mga ibinigay na pamamaraan kasama ng kanilang mga opsyon. Sa artikulong ito, nakita natin ang mga halimbawa sa pamamagitan ng pagsasaalang-alang sa iba't ibang mga opsyon. Gayundin, nakita namin ang dalawang paraan ng pagpasa ng mga opsyon sa pamamaraan.