PySpark Read CSV()

Pyspark Read Csv



Ang pagbuo ng PySpark DataFrame mula sa CSV data ay posible sa PySpark gamit ang read.csv() function. Sa ilang mga sitwasyon, kung gusto mong i-load ang external na data sa PySpark DataFrame, sinusuportahan ng PySpark ang maraming format tulad ng JSON, CSV, atbp. Sa tutorial na ito, makikita natin kung paano basahin ang CSV data at i-load ito sa PySpark DataFrame. Gayundin, tatalakayin natin ang paglo-load ng maraming CSV file sa isang DataFrame sa isang pagkakataon na may mga halimbawa.

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 pyspark

mula 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 pyspark

mula 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 pyspark

mula 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 pyspark

mula 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 pyspark

mula 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.