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 pysparkSetelah 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 pysparkimpor 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.