PySpark чете JSON()

Pyspark Cete Json



Докато работите с PySpark DataFrames, той трябва да се съхранява в PySpark DataFrame, ако искате да обработвате JSON данните. След като съхраним в DataFrame, можем да приложим различните операции и методи върху данните. Освен това има толкова много предимства, ако конвертираме JSON в PySpark DataFrame, тъй като е просто и можем да трансформираме/разделяме данните по по-прост начин.

Тема на съдържанието:

Четене на JSON в PySpark DataFrame с помощта на Pandas.read_json()







Четене на JSON към PySpark DataFrame с помощта на Spark.read.json()



Четене на JSON в PySpark DataFrame с помощта на PySpark SQL



В този урок ще разгледаме как да четем JSON в PySpark DataFrame с помощта на pandas.read_json(), spark.read.json() и spark.sql. Във всички сценарии ще разгледаме различните примери, като вземем предвид различните JSON формати.





Инсталирайте библиотеката PySpark, преди да приложите следните примери.

pip инсталирайте pyspark

След успешната инсталация можете да видите резултата, както следва:



Четене на JSON в PySpark DataFrame с помощта на Pandas.read_json()

В PySpark методът createDataFrame() се използва за директно създаване на DataFrame. Тук просто трябва да предадем JSON файла/пътя към JSON файла чрез метода pandas.read_json(). Този метод read_json() взема името на файла/пътя, който е наличен в модула Pandas. Ето защо е необходимо да импортирате и използвате модула Pandas.

Синтаксис:

spark_app.createDataFrame(pandas.read_json( 'име_на_файл.json' ))

Пример:

Нека създадем JSON файл с име „student_skill.json“, който съдържа 2 записа. Тук ключовете/колоните са „Студент 1“ и „Студент 2“. Редовете са име, възраст, умение1 и умение2.

импортиране на pyspark

вносни панди

от pyspark.sql импортирайте SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Linux Hint“ ).getOrCreate()

# Използване на pandas.read_json()

кандидат_скилс = linuxhint_spark_app.createDataFrame(pandas.read_json( 'student_skill.json' ))

kandidat_skills.show()

Изход:

Можем да видим, че JSON данните се преобразуват в PySpark DataFrame с определени колони и редове.

2. Четене на JSON в PySpark DataFrame с помощта на Spark.read.json()

Read.json() е метод, който е подобен на read_json() в Pandas. Тук read.json() взема път към JSON или директно към JSON файл и директно го зарежда в PySpark DataFrame. Няма нужда да използвате метода createDataFrame() в този сценарий. Ако искате да четете няколко JSON файла наведнъж, трябва да предадем списък с имена на JSON файлове през списък, който е разделен със запетая. Всички JSON записи се съхраняват в един DataFrame.

Синтаксис:

Един файл - spark_app.read.json( 'име_на_файл.json' )

Множество файлове - spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

Сценарий 1: Прочетете JSON с един ред

Ако вашият JSON файл е във форматите record1, record2, record3… (едноредов), можем да го наречем като JSON с единични редове. Spark обработва тези записи и ги съхранява в PySpark DataFrame като редове. Всеки запис е ред в PySpark DataFrame.

Нека създадем JSON файл с име „candidate_skills.json“, който съдържа 3 записа. Прочетете този JSON в PySpark DataFrame.

импортиране на pyspark

от pyspark.sql импортирайте SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Linux Hint“ ).getOrCreate()

# Прочетете kandidat_skills.json в PySpark DataFrame

кандидатски умения = linuxhint_spark_app.read.json( 'candidate_skills.json' )

kandidat_skills.show()

Изход:

Можем да видим, че JSON данните се преобразуват в PySpark DataFrame с определени записи и имена на колони.

Сценарий 2: Прочетете JSON с няколко реда

Ако вашият JSON файл има няколко реда, трябва да използвате метода read.option().json(), за да предадете многоредовия параметър, който трябва да бъде зададен на true. Това ни позволява да заредим JSON с множество редове в PySpark DataFrame.

read.option( 'многоредов' , 'вярно' ).json( 'име_на_файл.json' )

Нека създадем JSON файл с име „multi.json“, който съдържа 3 записа. Прочетете този JSON в PySpark DataFrame.

импортиране на pyspark

от pyspark.sql импортирайте SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Linux Hint“ ).getOrCreate()

# Прочетете multi.json (с няколко реда) в PySpark DataFrame

кандидатски умения = linuxhint_spark_app.read.option( 'многоредов' , 'вярно' ).json( 'multi.json' )

kandidat_skills.show()

Изход:

Сценарий 3: Прочетете множество JSON

Вече обсъдихме в началната фаза на този урок относно множество JSON файлове. Ако искате да четете няколко JSON файла наведнъж и да ги съхранявате в един PySpark DataFrame, трябва да предадем списък с имена на файлове към метода read.json().

Нека създадем два JSON файла с имена „candidate_skills.json“ и „candidate_skills2.json“ и да ги заредим в PySpark DataFrame.

Файлът “candidate_skills.json” съдържа три записа.

Файлът “candidate_skill2.json” съдържа само един запис.

импортиране на pyspark

от pyspark.sql импортирайте SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Linux Hint“ ).getOrCreate()

# Прочетете файловете кандидат_скилс и кандидатскилс2 наведнъж в PySpark DataFrame

кандидатски умения = linuxhint_spark_app.read.json([ 'candidate_skills.json' , 'candidate_skills2.json' ])

kandidat_skills.show()

Изход:

И накрая, DataFrame съдържа четири записа. Първите три записа принадлежат към първия JSON, а последните записа принадлежат към втория JSON.

Четене на JSON към PySpark DataFrame с помощта на Spark.read.json()

Read.json() е метод, който е подобен на read_json() в Pandas. Тук read.json() взема път към JSON или директно към JSON файл и го зарежда директно в PySpark DataFrame. Няма нужда да използвате метода createDataFrame() в този сценарий. Ако искате да четете няколко JSON файла наведнъж, трябва да предадем списък с имена на JSON файлове през списък, който е разделен със запетая. Всички JSON записи се съхраняват в един DataFrame.

Синтаксис:

Един файл - spark_app.read.json( 'име_на_файл.json' )

Множество файлове - spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

Сценарий 1: Прочетете JSON с един ред

Ако вашият JSON файл е във формат record1, record2, record3… (един ред), можем да го наречем като JSON с единични редове. Spark обработва тези записи и ги съхранява в PySpark DataFrame като редове. Всеки запис е ред в PySpark DataFrame.

Нека създадем JSON файл с име „candidate_skills.json“, който съдържа 3 записа. Прочетете този JSON в PySpark DataFrame.

импортиране на pyspark

от pyspark.sql импортирайте SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Linux Hint“ ).getOrCreate()

# Прочетете kandidat_skills.json в PySpark DataFrame

кандидатски умения = linuxhint_spark_app.read.json( 'candidate_skills.json' )

kandidat_skills.show()

Изход:

Можем да видим, че JSON данните се преобразуват в PySpark DataFrame с определени записи и имена на колони.

Четене на JSON в PySpark DataFrame с помощта на PySpark SQL

Възможно е да създадете временен изглед на нашите JSON данни с помощта на PySpark SQL. Директно можем да предоставим JSON в момента на създаване на временния изглед. Вижте следния синтаксис. След това можем да използваме командата SELECT, за да покажем PySpark DataFrame.

Синтаксис:

spark_app.sql( „СЪЗДАВАНЕ НА ВРЕМЕНЕН ИЗГЛЕД VIEW_NAME ИЗПОЛЗВАНЕ НА json ОПЦИИ (път ‘file_name.json’)“ )

Тук „VIEW_NAME“ е изгледът на JSON данните, а „file_name“ е името на JSON файла.

Пример 1:

Помислете за JSON файла, който се използва в предишните примери – „candidate_skills.json“. Изберете всички редове от DataFrame, като използвате SELECT с оператора „*“. Тук * избира всички колони от PySpark DataFrame.

импортиране на pyspark

вносни панди

от pyspark.sql импортирайте SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Linux Hint“ ).getOrCreate()

# Използване на spark.sql за създаване на VIEW от JSON

кандидат_умения = linuxhint_spark_app.sql( „СЪЗДАВАНЕ НА ВРЕМЕНЕН ИЗГЛЕД Candidate_data ИЗПОЛЗВАНЕ НА json ОПЦИИ (път „candidate_skills.json“)“ )

# Използвайте заявка SELECT, за да изберете всички записи от Candidate_data.

linuxhint_spark_app.sql( „ИЗБЕРЕТЕ * от Candidate_data“ ).покажи()

Изход:

Общият брой записи в PySpark DataFrame (прочетени от JSON) е 3.

Пример 2:

Сега филтрирайте записите в PySpark DataFrame въз основа на възрастовата колона. Използвайте оператора „по-голямо от“ за възрастта, за да получите редовете с възраст над 22 години.

# Използвайте заявка SELECT, за да изберете записи с възраст > 22.

linuxhint_spark_app.sql( 'SELECT * from Candidate_data where age>22' ).покажи()

Изход:

Има само един запис в PySpark DataFrame с възраст над 22 години.

Заключение

Научихме трите различни начина за четене на JSON в PySpark DataFrame. Първо, научихме как да използваме метода read_json(), който е наличен в модула Pandas, за да четем JSON в PySpark DataFrame. След това научихме как да четем едно-/многоредовите JSON файлове с помощта на метода spark.read.json() с option(). За да прочетем няколко JSON файла наведнъж, трябва да предадем списък с имена на файлове към този метод. Използвайки PySpark SQL, JSON файлът се чете във временния изглед и DataFrame се показва с помощта на заявката SELECT.