PySpark Чтение JSON()

Pyspark Ctenie 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( «Подсказка по Линукс» ).getOrCreate()

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

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

кандидат_навыки.шоу()

Выход:

Мы видим, что данные 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([ 'файл1.json' , 'файл2.json' ,...])

Сценарий 1: Чтение JSON с одной строкой

Если ваш файл JSON имеет форматы «запись1», «запись2», «запись3…» (однострочный), мы можем назвать его JSON с отдельными строками. Spark обрабатывает эти записи и сохраняет их в PySpark DataFrame в виде строк. Каждая запись представляет собой строку в PySpark DataFrame.

Давайте создадим файл JSON с именем «candidate_skills.json», который содержит 3 записи. Считайте этот JSON в PySpark DataFrame.

импортировать pyspark

из pyspark.sql импортировать SparkSession

linuxhint_spark_app = SparkSession.builder.appName( «Подсказка по Линукс» ).getOrCreate()

# Считываем Kandi_skills.json в PySpark DataFrame

кандидат_навыки = linuxhint_spark_app.read.json( 'candidate_skills.json' )

кандидат_навыки.шоу()

Выход:

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

Сценарий 2: Чтение JSON с несколькими строками

Если ваш файл JSON состоит из нескольких строк, вам нужно использовать метод read.option().json() для передачи многострочного параметра, для которого должно быть установлено значение true. Это позволяет нам загружать JSON с несколькими строками в PySpark DataFrame.

читать.вариант( 'многострочный' , 'истинный' ).json( 'имя_файла.json' )

Давайте создадим файл JSON с именем «multi.json», который содержит 3 записи. Считайте этот JSON в PySpark DataFrame.

импортировать pyspark

из pyspark.sql импортировать SparkSession

linuxhint_spark_app = SparkSession.builder.appName( «Подсказка по Линукс» ).getOrCreate()

# Считайте multi.json (имеющий несколько строк) в PySpark DataFrame

кандидат_навыки = linuxhint_spark_app.read.option( 'многострочный' , 'истинный' ).json( 'мульти.json' )

кандидат_навыки.шоу()

Выход:

Сценарий 3: Чтение нескольких JSON

Мы уже обсуждали на начальной стадии этого руководства несколько файлов JSON. Если вы хотите прочитать несколько файлов JSON за раз и сохранить их в одном кадре данных PySpark, нам нужно передать список имен файлов в метод 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( «Подсказка по Линукс» ).getOrCreate()

# Чтение файлов кандидатов_навыков и кандидатов_навыков2 одновременно в PySpark DataFrame

кандидат_навыки = linuxhint_spark_app.read.json([ 'candidate_skills.json' , 'candidate_skills2.json' ])

кандидат_навыки.шоу()

Выход:

Наконец, 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([ 'файл1.json' , 'файл2.json' ,...])

Сценарий 1: Чтение JSON с одной строкой

Если ваш файл JSON имеет формат записи1, запись2, запись3… (однострочный), мы можем назвать его JSON с отдельными строками. Spark обрабатывает эти записи и сохраняет их в PySpark DataFrame в виде строк. Каждая запись представляет собой строку в PySpark DataFrame.

Давайте создадим файл JSON с именем «candidate_skills.json», который содержит 3 записи. Считайте этот JSON в PySpark DataFrame.

импортировать pyspark

из pyspark.sql импортировать SparkSession

linuxhint_spark_app = SparkSession.builder.appName( «Подсказка по Линукс» ).getOrCreate()

# Считываем Kandi_skills.json в PySpark DataFrame

кандидат_навыки = linuxhint_spark_app.read.json( 'candidate_skills.json' )

кандидат_навыки.шоу()

Выход:

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

Чтение JSON в PySpark DataFrame с использованием PySpark SQL

Можно создать временное представление наших данных JSON с помощью PySpark SQL. Напрямую мы можем предоставить JSON во время создания временного представления. Посмотрите на следующий синтаксис. После этого мы можем использовать команду SELECT для отображения PySpark DataFrame.

Синтаксис:

spark_app.sql( «СОЗДАТЬ ВРЕМЕННОЕ ПРОСМОТР ИМЯ_ПРОСМОТРА, ИСПОЛЬЗУЯ ПАРАМЕТРЫ json (путь ‘имя_файла.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( «Подсказка по Линукс» ).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( «ВЫБЕРИТЕ * из данных о кандидатах, где возраст> 22» ).показывать()

Выход:

В PySpark DataFrame есть только одна запись с возрастом больше 22 лет.

Заключение

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