การแปลง PySpark DataFrame เป็น CSV

Kar Paelng Pyspark Dataframe Pen Csv



มาดูสี่สถานการณ์ที่แตกต่างกันในการแปลง PySpark DataFrame เป็น CSV โดยตรง เราใช้เมธอด write.csv() เพื่อแปลง PySpark DataFrame เป็น CSV ใช้ฟังก์ชัน to_csv() เพื่อแปลง PySpark Pandas DataFrame เป็น CSV นอกจากนี้ยังสามารถทำได้โดยการแปลงเป็นอาร์เรย์ NumPy

หัวข้อเนื้อหา:

หากคุณต้องการทราบเกี่ยวกับ PySpark DataFrame และการติดตั้งโมดูล โปรดอ่านสิ่งนี้ บทความ .







PySpark DataFrame เป็น CSV โดยแปลงเป็น Pandas DataFrame

to_csv() เป็นเมธอดที่มีอยู่ในโมดูล Pandas ซึ่งจะแปลง Pandas DataFrame เป็น CSV ก่อนอื่น เราต้องแปลง PySpark DataFrame เป็น Pandas DataFrame เมธอด toPandas() ใช้ในการทำเช่นนั้น มาดูไวยากรณ์ของ to_csv() พร้อมกับพารามิเตอร์



ไวยากรณ์:



pandas_dataframe_obj.to_csv(เส้นทาง/ 'file_name.csv' , หัวข้อ ,ดัชนี,คอลัมน์,โหมด...)
  1. เราจำเป็นต้องระบุชื่อไฟล์ของไฟล์ CSV หากคุณต้องการจัดเก็บ CSV ที่ดาวน์โหลดไว้ในตำแหน่งเฉพาะบนพีซีของคุณ คุณยังสามารถระบุพาธพร้อมกับชื่อไฟล์ได้อีกด้วย
  2. คอลัมน์จะรวมอยู่ด้วยหากตั้งค่าส่วนหัวเป็น 'จริง' หากคุณไม่ต้องการคอลัมน์ ให้ตั้งค่าส่วนหัวเป็น 'เท็จ'
  3. มีการระบุดัชนีหากตั้งค่าดัชนีเป็น 'จริง' หากคุณไม่ต้องการดัชนี ให้ตั้งค่าดัชนีเป็น 'เท็จ'
  4. พารามิเตอร์ Columns ใช้รายชื่อคอลัมน์ซึ่งเราสามารถระบุได้ว่าคอลัมน์ใดจะถูกแยกไปยังไฟล์ CSV
  5. เราสามารถเพิ่มบันทึกลงใน CSV โดยใช้พารามิเตอร์โหมด ต่อท้าย - ใช้ 'a' เพื่อทำเช่นนี้

ตัวอย่างที่ 1: ด้วยพารามิเตอร์ส่วนหัวและดัชนี

สร้าง “skills_df” PySpark DataFrame ที่มี 3 แถวและ 4 คอลัมน์ แปลง DataFrame นี้เป็น CSV โดยแปลงเป็น Pandas DataFrame ก่อน





นำเข้า pyspark

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

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

# ข้อมูลทักษะที่มี 3 แถวและ 4 คอลัมน์

ทักษะ =[{ 'รหัส' : 123 , 'บุคคล' : 'น้ำผึ้ง' , 'ทักษะ' : 'จิตรกรรม' , 'รางวัล' : 25000 },

{ 'รหัส' : 112 , 'บุคคล' : 'มูนี่' , 'ทักษะ' : 'เต้นรำ' , 'รางวัล' : 2543 },

{ 'รหัส' : 153 , 'บุคคล' : 'ทูลาซี' , 'ทักษะ' : 'การอ่าน' , 'รางวัล' : 1200 }

]

# สร้าง dataframe ทักษะจากข้อมูลด้านบน

Skills_df = linuxhint_spark_app.createDataFrame (ทักษะ)

ทักษะ_df.แสดง()

# แปลง Skills_df เป็น Pandas DataFrame

pandas_skills_df= skills_df.toPandas()

พิมพ์ (pandas_skills_df)

# แปลง DataFrame นี้เป็น csv พร้อมส่วนหัวและดัชนี

pandas_skills_df.to_csv( 'pandas_skills1.csv' , หัวข้อ =จริง, ดัชนี=จริง)

เอาท์พุต:



เราจะเห็นว่า PySpark DataFrame ถูกแปลงเป็น Pandas DataFrame มาดูกันว่าจะถูกแปลงเป็น CSV ด้วยชื่อคอลัมน์และดัชนีหรือไม่:

ตัวอย่างที่ 2: ต่อท้ายข้อมูลใน CSV

สร้าง PySpark DataFrame อีกหนึ่งรายการด้วย 1 ระเบียน แล้วผนวกสิ่งนี้กับ CSV ซึ่งสร้างขึ้นโดยเป็นส่วนหนึ่งของตัวอย่างแรกของเรา ตรวจสอบให้แน่ใจว่าเราต้องตั้งค่าส่วนหัวเป็น 'เท็จ' พร้อมกับพารามิเตอร์โหมด มิฉะนั้น ชื่อคอลัมน์จะถูกต่อท้ายเป็นแถวด้วย

นำเข้า pyspark

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

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

ทักษะ =[{ 'รหัส' : 90 , 'บุคคล' : 'ภารกาฟ' , 'ทักษะ' : 'การอ่าน' , 'รางวัล' : 12000 }

]

# สร้าง dataframe ทักษะจากข้อมูลด้านบน

Skills_df = linuxhint_spark_app.createDataFrame (ทักษะ)

# แปลง Skills_df เป็น Pandas DataFrame

pandas_skills_df= skills_df.toPandas()

# เพิ่ม DataFrame นี้ในไฟล์ pandas_skills1.csv

pandas_skills_df.to_csv( 'pandas_skills1.csv' , โหมด= 'เอ' , หัวข้อ =เท็จ)

เอาต์พุต CSV:

เราจะเห็นว่ามีการเพิ่มแถวใหม่ในไฟล์ CSV

ตัวอย่างที่ 3: ด้วยพารามิเตอร์คอลัมน์

มามี DataFrame เดียวกันและแปลงเป็น CSV ด้วยสองคอลัมน์: 'บุคคล' และ 'รางวัล'

นำเข้า pyspark

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

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

# ข้อมูลทักษะที่มี 3 แถวและ 4 คอลัมน์

ทักษะ =[{ 'รหัส' : 123 , 'บุคคล' : 'น้ำผึ้ง' , 'ทักษะ' : 'จิตรกรรม' , 'รางวัล' : 25000 },

{ 'รหัส' : 112 , 'บุคคล' : 'มูนี่' , 'ทักษะ' : 'เต้นรำ' , 'รางวัล' : 2543 },

{ 'รหัส' : 153 , 'บุคคล' : 'ทูลาซี' , 'ทักษะ' : 'การอ่าน' , 'รางวัล' : 1200 }

]

# สร้าง dataframe ทักษะจากข้อมูลด้านบน

Skills_df = linuxhint_spark_app.createDataFrame (ทักษะ)

# แปลง Skills_df เป็น Pandas DataFrame

pandas_skills_df= skills_df.toPandas()

# แปลง DataFrame นี้เป็น csv ด้วยคอลัมน์เฉพาะ

pandas_skills_df.to_csv( 'pandas_skills2.csv' , คอลัมน์=[ 'บุคคล' , 'รางวัล' ])

เอาต์พุต CSV:

เราจะเห็นว่ามีเฉพาะคอลัมน์ 'บุคคล' และ 'รางวัล' ในไฟล์ CSV

PySpark Pandas DataFrame เป็น CSV โดยใช้วิธี To_Csv()

to_csv() เป็นเมธอดที่มีอยู่ในโมดูล Pandas ซึ่งจะแปลง Pandas DataFrame เป็น CSV ก่อนอื่น เราต้องแปลง PySpark DataFrame เป็น Pandas DataFrame เมธอด toPandas() ใช้ในการทำเช่นนั้น มาดูไวยากรณ์ของ to_csv() พร้อมกับพารามิเตอร์:

ไวยากรณ์:

pyspark_pandas_dataframe_obj.to_csv(เส้นทาง/ 'file_name.csv' , หัวข้อ ,ดัชนี,คอลัมน์,...)
  1. เราจำเป็นต้องระบุชื่อไฟล์ของไฟล์ CSV หากคุณต้องการจัดเก็บ CSV ที่ดาวน์โหลดไว้ในตำแหน่งเฉพาะบนพีซีของคุณ คุณยังสามารถระบุพาธพร้อมกับชื่อไฟล์ได้อีกด้วย
  2. คอลัมน์จะรวมอยู่ด้วยหากตั้งค่าส่วนหัวเป็น 'จริง' หากคุณไม่ต้องการคอลัมน์ ให้ตั้งค่าส่วนหัวเป็น 'เท็จ'
  3. มีการระบุดัชนีหากตั้งค่าดัชนีเป็น 'จริง' หากคุณไม่ต้องการดัชนี ให้ตั้งค่าดัชนีเป็น 'เท็จ'
  4. พารามิเตอร์คอลัมน์ใช้รายชื่อคอลัมน์ซึ่งเราสามารถระบุได้ว่าคอลัมน์ใดจะถูกแยกไปยังไฟล์ CSV

ตัวอย่างที่ 1: ด้วยพารามิเตอร์คอลัมน์

สร้าง PySpark Pandas DataFrame ที่มี 3 คอลัมน์และแปลงเป็น CSV โดยใช้ to_csv() กับคอลัมน์ 'บุคคล' และ 'รางวัล'

จากแพนด้านำเข้า pyspark

pyspark_pandas_dataframe=pandas.DataFrame({ 'รหัส' :[ 90 , 78 , 90 , 57 ] 'บุคคล' :[ 'น้ำผึ้ง' , 'มูนี่' , 'ตัวเขาเอง' , 'ราธา' ] 'รางวัล' :[ 1 , 2 , 3 , 4 ]})

พิมพ์ (pyspark_pandas_dataframe)

# แปลง DataFrame นี้เป็น csv ด้วยคอลัมน์เฉพาะ

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas1' , คอลัมน์=[ 'บุคคล' , 'รางวัล' ])

เอาท์พุต:

เราจะเห็นว่า PySpark Pandas DataFrame ถูกแปลงเป็น CSV ด้วยสองพาร์ติชัน แต่ละพาร์ติชันมี 2 ระเบียน นอกจากนี้ คอลัมน์ใน CSV จะเป็น 'บุคคล' และ 'รางวัล' เท่านั้น

ไฟล์พาร์ติชัน 1:

ไฟล์พาร์ติชัน 2:

ตัวอย่างที่ 2: ด้วยพารามิเตอร์ส่วนหัว

ใช้ DataFrame ก่อนหน้าและระบุพารามิเตอร์ส่วนหัวโดยตั้งค่าเป็น 'จริง'

จากแพนด้านำเข้า pyspark

pyspark_pandas_dataframe=pandas.DataFrame({ 'รหัส' :[ 90 , 78 , 90 , 57 ] 'บุคคล' :[ 'น้ำผึ้ง' , 'มูนี่' , 'ตัวเขาเอง' , 'ราธา' ] 'รางวัล' :[ 1 , 2 , 3 , 4 ]})

# แปลง DataFrame นี้เป็น csv พร้อมส่วนหัว

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas2' , หัวข้อ =จริง)

เอาต์พุต CSV:

เราจะเห็นว่า PySpark Pandas DataFrame ถูกแปลงเป็น CSV ด้วยสองพาร์ติชัน แต่ละพาร์ติชันมี 2 ระเบียนพร้อมชื่อคอลัมน์

ไฟล์พาร์ติชัน 1:

ไฟล์พาร์ติชัน 2:

PySpark Pandas DataFrame เป็น CSV โดยแปลงเป็น NumPy Array

เรามีตัวเลือกในการแปลง PySpark Pandas DataFrame เป็น CSV โดยแปลงเป็นอาร์เรย์ Numpy to_numpy() เป็นเมธอดที่มีอยู่ในโมดูล PySpark Pandas ซึ่งแปลง PySpark Pandas DataFrame เป็นอาร์เรย์ NumPy

ไวยากรณ์:

pyspark_pandas_dataframe_obj.to_numpy()

จะไม่ใช้พารามิเตอร์ใดๆ

ใช้เมธอด Tofile()

หลังจากแปลงเป็นอาร์เรย์ NumPy แล้ว เราสามารถใช้เมธอด tofile() เพื่อแปลง NumPy เป็น CSV ที่นี่จะเก็บบันทึกแต่ละรายการในคอลัมน์เซลล์ใหม่อย่างชาญฉลาดในไฟล์ CSV

ไวยากรณ์:

array_obj.to_numpy(ชื่อไฟล์/เส้นทาง,sep=' ')

ใช้ชื่อไฟล์หรือเส้นทางของ CSV และตัวคั่น

ตัวอย่าง:

สร้าง PySpark Pandas DataFrame ที่มี 3 คอลัมน์และ 4 ระเบียน แล้วแปลงเป็น CSV โดยแปลงเป็นอาร์เรย์ NumPy ก่อน

จากแพนด้านำเข้า pyspark

pyspark_pandas_dataframe=pandas.DataFrame({ 'รหัส' :[ 90 , 78 , 90 , 57 ] 'บุคคล' :[ 'น้ำผึ้ง' , 'มูนี่' , 'ตัวเขาเอง' , 'ราธา' ] 'รางวัล' :[ 1 , 2 , 3 , 4 ]})

# แปลง DataFrame ด้านบนเป็นอาร์เรย์ numpy

แปลง = pyspark_pandas_dataframe.to_numpy()

พิมพ์ (แปลง)

# การใช้ tofile()

แปลง.tofile( 'converted1.csv' , ก.ย. = ',' )

เอาท์พุต:

[[ 90 'น้ำผึ้ง' 1 ]

[ 78 'มูนี่' 2 ]

[ 90 'ตัวเขาเอง' 3 ]

[ 57 'ราธา' 4 ]]

เราจะเห็นว่า PySpark Pandas DataFrame ถูกแปลงเป็นอาร์เรย์ NumPy (ค่า 12 ค่า) หากคุณเห็นข้อมูล CSV ระบบจะเก็บค่าแต่ละเซลล์ไว้ในคอลัมน์ใหม่

PySpark DataFrame เป็น CSV โดยใช้วิธี Write.Csv()

เมธอด write.csv() ใช้ชื่อไฟล์/พาธที่เราจำเป็นต้องบันทึกไฟล์ CSV เป็นพารามิเตอร์

ไวยากรณ์:

dataframe_object.coalesce( 1 ).write.csv( 'ชื่อไฟล์' )

ที่จริงแล้ว CSV ถูกบันทึกเป็นพาร์ติชั่น (มากกว่าหนึ่งพาร์ติชั่น) เพื่อกำจัดสิ่งนี้ เราได้รวมไฟล์ CSV ที่แบ่งพาร์ติชันทั้งหมดเป็นไฟล์เดียว ในสถานการณ์สมมตินี้ เราใช้ฟังก์ชัน coalesce() ตอนนี้ เราสามารถเห็นไฟล์ CSV เพียงไฟล์เดียวที่มีแถวทั้งหมดจาก PySpark DataFrame

ตัวอย่าง:

พิจารณา PySpark DataFrame ที่มี 4 ระเบียนที่มี 4 คอลัมน์ เขียน DataFrame นี้เป็น CSV ด้วยไฟล์ชื่อ “market_details”

นำเข้า pyspark

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

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

# ข้อมูลการตลาดที่มี 4 แถวและ 4 คอลัมน์

ตลาด =[{ 'm_id' : 'mz-001' , 'm_name' : 'เอบีซี' , 'm_เมือง' : 'เดลี' , 'm_state' : 'เดลี' },

{ 'm_id' : 'mz-002' , 'm_name' : 'เอ็กซ์วายแซด' , 'm_เมือง' : 'ปัฏนา' , 'm_state' : 'ลัคเนา' },

{ 'm_id' : 'mz-003' , 'm_name' : 'พีคิวอาร์' , 'm_เมือง' : 'ฟลอริดา' , 'm_state' : 'หนึ่ง' },

{ 'm_id' : 'mz-004' , 'm_name' : 'เอบีซี' , 'm_เมือง' : 'เดลี' , 'm_state' : 'ลัคเนา' }

]



# สร้าง dataframe ตลาดจากข้อมูลข้างต้น

market_df = linuxhint_spark_app.createDataFrame (ตลาด)

#ข้อมูลตลาดจริง

market_df.show()

#write.csv()

market_df.coalesce( 1 ).write.csv( 'market_details' )

เอาท์พุต:

ตรวจสอบไฟล์กัน:

เปิดไฟล์ล่าสุดเพื่อดูบันทึก

บทสรุป

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