PySpark Baca JSON()

Pyspark Baca Json



Saat bekerja dengan PySpark DataFrames, ini perlu disimpan di PySpark DataFrame jika Anda ingin memproses data JSON. Setelah menyimpan di DataFrame, kita dapat menerapkan berbagai operasi dan metode pada data. Juga, ada begitu banyak keuntungan jika kita mengonversi JSON ke PySpark DataFrame karena sederhana dan kita dapat mengubah/mempartisi data dengan cara yang lebih sederhana.

Topik Isi:

Membaca JSON ke dalam PySpark DataFrame Menggunakan Pandas.read_json()







Membaca JSON ke PySpark DataFrame Menggunakan Spark.read.json()



Membaca JSON ke PySpark DataFrame Menggunakan PySpark SQL



Dalam tutorial ini, kita akan melihat cara membaca JSON ke dalam PySpark DataFrame menggunakan pandas.read_json(), spark.read.json(), dan spark.sql. Dalam semua skenario, kita akan melihat contoh yang berbeda dengan mempertimbangkan format JSON yang berbeda.





Instal library PySpark sebelum menerapkan contoh berikut.

pip instal pyspark

Setelah instalasi berhasil, Anda dapat melihat output sebagai berikut:



Membaca JSON ke dalam PySpark DataFrame Menggunakan Pandas.read_json()

Di PySpark, metode createDataFrame() digunakan untuk membuat DataFrame secara langsung. Di sini, kita hanya perlu melewatkan file/jalur JSON ke file JSON melalui metode pandas.read_json() . Metode read_json() ini mengambil nama file/jalur yang tersedia di modul Pandas. Inilah mengapa penting untuk mengimpor dan menggunakan modul Pandas.

Sintaksis:

spark_app.createDataFrame(pandas.read_json( 'nama_berkas.json' ))

Contoh:

Mari buat file JSON bernama 'student_skill.json' yang menyimpan 2 record. Di sini, kunci/kolomnya adalah “Student 1” dan “Student 2”. Barisnya adalah nama, umur, skill1, dan skill2.

impor pyspark

impor panda

dari pyspark.sql impor SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()

# Menggunakan pandas.read_json()

kandidat_keterampilan = linuxhint_spark_app.createDataFrame(pandas.read_json( 'student_skill.json' ))

kandidat_skills.show()

Keluaran:

Kita dapat melihat bahwa data JSON dikonversi menjadi PySpark DataFrame dengan kolom dan baris tertentu.

2. Membaca JSON ke PySpark DataFrame Menggunakan Spark.read.json()

read.json() adalah metode yang mirip dengan read_json() di Pandas. Di sini, read.json() mengambil jalur ke JSON atau langsung ke file JSON, dan langsung memuatnya ke dalam PySpark DataFrame. Tidak perlu menggunakan metode createDataFrame() dalam skenario ini. Jika Anda ingin membaca beberapa file JSON sekaligus, kami harus meneruskan daftar nama file JSON melalui daftar yang dipisahkan dengan koma. Semua catatan JSON disimpan dalam satu DataFrame.

Sintaksis:

File Tunggal - spark_app.read.json( 'nama_berkas.json' )

Beberapa File - spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

Skenario 1: Baca JSON Memiliki Satu Baris

Jika file JSON Anda dalam format record1, record2, record3… (baris tunggal), kita dapat menyebutnya sebagai JSON dengan satu baris. Spark memproses catatan ini dan menyimpannya di PySpark DataFrame sebagai baris. Setiap record adalah baris dalam PySpark DataFrame.

Mari buat file JSON bernama 'candidate_skills.json' yang menyimpan 3 record. Baca JSON ini ke dalam PySpark DataFrame.

impor pyspark

dari pyspark.sql impor SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()

# Baca kandidat_skills.json ke dalam PySpark DataFrame

kandidat_keterampilan = linuxhint_spark_app.read.json( 'kandidat_skills.json' )

kandidat_skills.show()

Keluaran:

Kita dapat melihat bahwa data JSON dikonversi menjadi PySpark DataFrame dengan catatan dan nama kolom yang ditentukan.

Skenario 2: Baca JSON Memiliki Banyak Baris

Jika file JSON Anda memiliki banyak baris, Anda perlu menggunakan metode read.option().json() untuk meneruskan parameter multiline yang harus disetel ke true. Ini memungkinkan kami memuat JSON yang memiliki banyak baris ke dalam PySpark DataFrame.

baca.opsi( 'multi baris' , 'BENAR' ).json( 'nama_berkas.json' )

Mari buat file JSON bernama 'multi.json' yang menyimpan 3 catatan. Baca JSON ini ke dalam PySpark DataFrame.

impor pyspark

dari pyspark.sql impor SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()

# Baca multi.json (memiliki banyak baris) ke dalam PySpark DataFrame

kandidat_keterampilan = linuxhint_spark_app.read.option( 'multi baris' , 'BENAR' ).json( 'multi.json' )

kandidat_skills.show()

Keluaran:

Skenario 3: Baca Beberapa JSON

Kami sudah membahas pada tahap awal tutorial ini mengenai banyak file JSON. Jika Anda ingin membaca banyak file JSON sekaligus dan menyimpannya dalam satu PySpark DataFrame, kita perlu meneruskan daftar nama file ke metode read.json() .

Mari buat dua file JSON bernama 'candidate_skills.json' dan 'candidate_skills2.json' dan muat ke dalam PySpark DataFrame.

File “candidate_skills.json” menyimpan tiga record.

File “candidate_skill2.json” hanya menyimpan satu record.

impor pyspark

dari pyspark.sql impor SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()

# Baca file kandidat_skills dan kandidat_skills2 sekaligus ke dalam PySpark DataFrame

kandidat_keterampilan = linuxhint_spark_app.read.json([ 'kandidat_skills.json' , 'kandidat_skills2.json' ])

kandidat_skills.show()

Keluaran:

Terakhir, DataFrame menyimpan empat catatan. Tiga catatan pertama milik JSON pertama dan catatan terakhir milik JSON kedua.

Membaca JSON ke PySpark DataFrame Menggunakan Spark.read.json()

read.json() adalah metode yang mirip dengan read_json() di Pandas. Di sini, read.json() mengambil jalur ke JSON atau langsung ke file JSON dan memuatnya langsung ke PySpark DataFrame. Tidak perlu menggunakan metode createDataFrame() dalam skenario ini. Jika Anda ingin membaca beberapa file JSON sekaligus, kami harus meneruskan daftar nama file JSON melalui daftar yang dipisahkan dengan koma. Semua catatan JSON disimpan dalam satu DataFrame.

Sintaksis:

File Tunggal - spark_app.read.json( 'nama_berkas.json' )

Beberapa File - spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

Skenario 1: Baca JSON Memiliki Satu Baris

Jika file JSON Anda dalam format record1, record2, record3… (baris tunggal), kita dapat menyebutnya sebagai JSON dengan satu baris. Spark memproses catatan ini dan menyimpannya di PySpark DataFrame sebagai baris. Setiap record adalah baris dalam PySpark DataFrame.

Mari buat file JSON bernama 'candidate_skills.json' yang menyimpan 3 record. Baca JSON ini ke dalam PySpark DataFrame.

impor pyspark

dari pyspark.sql impor SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()

# Baca kandidat_skills.json ke dalam PySpark DataFrame

kandidat_keterampilan = linuxhint_spark_app.read.json( 'kandidat_skills.json' )

kandidat_skills.show()

Keluaran:

Kita dapat melihat bahwa data JSON dikonversi menjadi PySpark DataFrame dengan catatan dan nama kolom yang ditentukan.

Membaca JSON ke PySpark DataFrame Menggunakan PySpark SQL

Dimungkinkan untuk membuat tampilan sementara dari data JSON kami menggunakan PySpark SQL. Secara langsung, kami dapat menyediakan JSON pada saat membuat tampilan sementara. Perhatikan sintaks berikut. Setelah itu, kita dapat menggunakan perintah SELECT untuk menampilkan PySpark DataFrame.

Sintaksis:

spark_app.sql( 'BUAT TAMPILAN SEMENTARA VIEW_NAME MENGGUNAKAN json OPTIONS (jalur 'file_name.json')' )

Di sini, 'VIEW_NAME' adalah tampilan data JSON dan 'file_name' adalah nama file JSON.

Contoh 1:

Pertimbangkan file JSON yang digunakan pada contoh sebelumnya – “candidate_skills.json”. Pilih semua baris dari DataFrame menggunakan SELECT dengan operator “*”. Di sini, * memilih semua kolom dari PySpark DataFrame.

impor pyspark

impor panda

dari pyspark.sql impor SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()

# Menggunakan spark.sql untuk membuat VIEW dari JSON

kandidat_keterampilan = linuxhint_spark_app.sql( 'BUAT TAMPILAN SEMENTARA Calon_data MENGGUNAKAN json OPSI (jalur 'kandidat_skills.json')' )

# Gunakan kueri SELECT untuk memilih semua record dari Candidate_data.

linuxhint_spark_app.sql( 'PILIH * dari Data_Kandidat' ).menunjukkan()

Keluaran:

Jumlah total catatan dalam PySpark DataFrame (dibaca dari JSON) adalah 3.

Contoh 2:

Sekarang, filter catatan di PySpark DataFrame berdasarkan kolom usia. Gunakan operator “lebih besar dari” pada umur untuk mendapatkan baris dengan umur lebih dari 22.

# Gunakan kueri SELECT untuk memilih rekaman dengan usia > 22.

linuxhint_spark_app.sql( 'PILIH * dari Data_Kandidat dengan usia>22' ).menunjukkan()

Keluaran:

Hanya ada satu catatan di PySpark DataFrame dengan usia lebih dari 22 tahun.

Kesimpulan

Kami mempelajari tiga cara berbeda untuk membaca JSON ke dalam PySpark DataFrame. Pertama, kita belajar cara menggunakan metode read_json() yang tersedia di modul Pandas untuk membaca JSON ke PySpark DataFrame. Selanjutnya, kita belajar cara membaca file JSON single/multi line menggunakan metode spark.read.json() dengan option(). Untuk membaca banyak file JSON sekaligus, kita perlu meneruskan daftar nama file ke metode ini. Menggunakan PySpark SQL, file JSON dibaca ke dalam tampilan sementara dan DataFrame ditampilkan menggunakan kueri SELECT.