PySpark อ่าน CSV()

Pyspark Xan Csv



การสร้าง PySpark DataFrame จากข้อมูล CSV เป็นไปได้ใน PySpark โดยใช้ฟังก์ชัน read.csv() ในบางสถานการณ์ หากคุณต้องการโหลดข้อมูลภายนอกลงใน PySpark DataFrame PySpark รองรับหลายรูปแบบ เช่น JSON, CSV เป็นต้น ในบทช่วยสอนนี้ เราจะดูวิธีการอ่านข้อมูล CSV และโหลดลงใน PySpark DataFrame นอกจากนี้ เราจะหารือเกี่ยวกับการโหลดไฟล์ CSV หลายไฟล์ใน DataFrame เดียวพร้อมกันพร้อมตัวอย่าง

Pyspark.sql.DataFrameReader.csv()

วิธีนี้ใช้เพื่ออ่านข้อมูลจากไฟล์ CSV และจัดเก็บไว้ใน PySpark DataFrame ใช้ตัวเลือกขณะอ่าน CSV ลงใน DataFrame เราจะหารือเกี่ยวกับตัวเลือกต่างๆ พร้อมตัวอย่างโดยละเอียด ขณะส่งไฟล์ CSV มากกว่าหนึ่งไฟล์ สิ่งสำคัญคือต้องส่งชื่อไฟล์พร้อมนามสกุลในรายการที่คั่นด้วยเครื่องหมายจุลภาค หากคุณกำลังอ่านไฟล์ CSV เพียงไฟล์เดียว ไม่จำเป็นต้องระบุชื่อไฟล์ในรายการ

ไวยากรณ์:







ไฟล์เดียว - spark_app.read.csv('file.csv', ตัวเลือก …)

หลายไฟล์ – spark_app.read.csv([‘file1.csv’,’file2.csv’,…],ตัวเลือก…)



นอกจากนี้ยังสามารถแยกตัวเลือกและชื่อไฟล์ได้อีกด้วย



ไฟล์เดียว – spark_app.read.options(ตัวเลือก…).csv('file.csv')





หลายไฟล์ – spark_app.read.options(ตัวเลือก…).csv([‘file1.csv’,’file2.csv’,…])

ติดตั้งไลบรารี PySpark ก่อนดำเนินการตามตัวอย่างต่อไปนี้



pip ติดตั้ง pyspark

หลังจากติดตั้งสำเร็จ คุณจะเห็นผลลัพธ์ดังต่อไปนี้:

สถานการณ์ที่ 1: การอ่านส่วนหัวของไฟล์ CSV

มาสร้างไฟล์ CSV ชื่อ “person_skill.csv” ด้วย 5 ระเบียนที่แสดงต่อไปนี้ และโหลดลงใน PySpark DataFrame:

พารามิเตอร์ส่วนหัวใช้เพื่อระบุชื่อคอลัมน์ใน PySpark DataFrame ใช้ค่าบูลีน หากเป็น 'จริง' ชื่อคอลัมน์จริงที่มีอยู่ในไฟล์ CSV จะถูกระบุใน DataFrame มิฉะนั้น จะระบุ c0, c1, c2... และชื่อคอลัมน์จริงจะเป็นแถว วิธีปฏิบัติที่ดีที่สุดคือตั้งค่าพารามิเตอร์ส่วนหัวให้เป็นจริง

ตัวอย่างที่ 1: ส่วนหัว = จริง

นำเข้า pyspark

จาก pyspark.sql นำเข้า SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'คำแนะนำลินุกซ์' ).getOrCreate()

# โหลด csv ชื่อ - person_skill.csv ลงในทักษะที่มีป้ายกำกับคอลัมน์พร้อมส่วนหัว

ทักษะ = linuxhint_spark_app.read.csv( 'person_skill.csv' , หัวข้อ =จริง)

# แสดง DataFrame

ทักษะการแสดง ()

เอาท์พุต:

คำอธิบาย:

เราจะเห็นว่า PySpark DataFrame ถูกสร้างขึ้นจากไฟล์ CSV พร้อมคอลัมน์และแถวที่ระบุ

ใช้คำสั่งต่อไปนี้เพื่อตรวจสอบคอลัมน์:

ทักษะ.คอลัมน์

ตัวอย่างที่ 2: ส่วนหัว = เท็จ

นำเข้า pyspark

จาก pyspark.sql นำเข้า SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'คำแนะนำลินุกซ์' ).getOrCreate()

# โหลด csv ชื่อ - person_skill.csv ลงในทักษะที่มีป้ายกำกับคอลัมน์โดยไม่มีส่วนหัว

ทักษะ = linuxhint_spark_app.read.csv( 'person_skill.csv' , หัวข้อ =เท็จ)

# แสดง DataFrame

ทักษะการแสดง ()

เอาท์พุต:

คำอธิบาย:

เราจะเห็นว่า PySpark DataFrame ถูกสร้างขึ้นจากไฟล์ CSV โดยไม่มีคอลัมน์อยู่

นอกจากนี้ คอลัมน์ที่มีอยู่จะถูกจัดเก็บเป็นแถวใน PySpark DataFrame

ทักษะ.คอลัมน์

การใช้ Read.options.csv()

ตอนนี้ เราอ่านไฟล์ CSV โดยใช้วิธี read.options.csv() ที่นี่ เราจำเป็นต้องส่งตัวเลือกเช่นตัวคั่น ส่วนหัว ฯลฯ ในตัวเลือกเป็นอาร์กิวเมนต์และชื่อไฟล์ใน csv() ส่งต่อพารามิเตอร์ส่วนหัวโดยตั้งค่าเป็น 'จริง'

สถานการณ์ที่ 1:

นำเข้า pyspark

จาก pyspark.sql นำเข้า SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'คำแนะนำลินุกซ์' ).getOrCreate()

# การใช้ read.options.csv()

ทักษะ = linuxhint_spark_app.read ตัวเลือก ( หัวข้อ =จริง).csv( 'person_skill.csv' )

# แสดง DataFrame

ทักษะการแสดง ()

เอาท์พุต:

สถานการณ์ที่ 2: การอ่านตัวคั่นไฟล์ CSV

พารามิเตอร์ตัวคั่นใช้อักขระที่ใช้เพื่อแยกแต่ละฟิลด์ ใช้เครื่องหมายจุลภาค (,) เป็นค่าเริ่มต้น ลองใช้ไฟล์ CSV เดียวกับที่ใช้ในสถานการณ์แรก และส่งเครื่องหมายจุลภาค (',') เป็นตัวคั่น

นำเข้า pyspark

จาก pyspark.sql นำเข้า SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'คำแนะนำลินุกซ์' ).getOrCreate()

# ใช้ read.options.csv() กับตัวคั่นพร้อมกับส่วนหัว

ทักษะ = linuxhint_spark_app.read ตัวเลือก ( หัวข้อ =จริง,ตัวคั่น= ',' ).csv( 'person_skill.csv' )

# แสดง DataFrame

ทักษะการแสดง ()

เอาท์พุต:

อ่านหลายไฟล์

จนถึงตอนนี้ เราอ่านไฟล์ CSV ไฟล์เดียวแล้ว มาดูวิธีการอ่านไฟล์ CSV มากกว่าหนึ่งไฟล์ ในสถานการณ์สมมตินี้ แถวในหลายๆ ไฟล์จะถูกต่อท้ายใน PySpark DataFrame เดียว เราเพียงแค่ต้องส่งชื่อไฟล์ในรายการภายในเมธอด

ตัวอย่าง:

มาสร้างไฟล์ CSV ต่อไปนี้ชื่อ “person_skill.csv” และ “person_skill2.csv” โดยมีข้อมูลต่อไปนี้:


อ่านไฟล์ CSV ทั้งสองไฟล์และจัดเก็บไว้ใน PySpark DataFrame ไฟล์เดียว

นำเข้า pyspark

จาก pyspark.sql นำเข้า SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'คำแนะนำลินุกซ์' ).getOrCreate()

# โหลดไฟล์ csv 2 ไฟล์ชื่อ - person_skill.csv และ person_skill2.csv ลงในทักษะที่มีป้ายกำกับคอลัมน์พร้อมส่วนหัว

ทักษะ = linuxhint_spark_app.read.csv([ 'person_skill.csv' , 'person_skill2.csv' ],กันยายน= ',' , หัวข้อ =จริง)

ทักษะการแสดง ()

เอาท์พุต:

คำอธิบาย:

CSV แรกมี 6 ระเบียน และ CSV ที่สองมี 3 ระเบียน เราจะเห็นว่า CSV แรกถูกโหลดลงใน DataFrame ก่อน จากนั้น CSV ที่สองจะถูกโหลด สุดท้าย PySpark DataFrame เก็บข้อมูลได้ 9 รายการ

บทสรุป

การอ่าน CSV ใน PySpark DataFrame นั้นค่อนข้างง่ายด้วยเมธอด pyspark.sql.DataFrameReader.csv() สามารถส่งพารามิเตอร์ส่วนหัวและตัวคั่นไปยังวิธีนี้เพื่อระบุคอลัมน์และรูปแบบได้ PySpark ยังรองรับการอ่านไฟล์ CSV หลายไฟล์พร้อมกันด้วยวิธีการที่ให้มาพร้อมกับตัวเลือก ในบทความนี้ เราได้เห็นตัวอย่างโดยพิจารณาจากตัวเลือกต่างๆ นอกจากนี้ เราได้เห็นสองวิธีในการส่งตัวเลือกไปยังวิธีการ