PySpark читает и записывает файлы JSON в DataFrame.
PySpark читает и записывает файлы JSON в DataFrame.
В этой статье Юн Дуоцзюнь Воляи все узнали, как иметь однострочные и многострочные записи. JSON Файл, прочитанный в PySpark DataFrame , вам также нужно научиться один раз читать один и несколько документов и использовать разные сохранения Параметры Воля JSON документнапиши ответ DataFrame。

PySpark SQL поставлять read.json("path") Преобразование одной или нескольких строк (многострочных) в JSON Файл, прочитанный в PySpark DataFrame и write.json("path") сохрани или напиши JSON Файловые функции. В этом уроке вы узнаете, как читать один файл, несколько файлов и все файлы в каталоге в DataFrame ииспользовать Python Примером может быть DataFrame напиши ответ JSON документ.

Уведомление: готов к использованию из коробки PySpark API Поддержка будет JSON файлы и другие форматы файлов, прочитанные в PySpark DataFrame середина.

использовать read.json("path") или read.format("json").load("path") Метод принимает путь к файлу в качестве параметра, который может быть JSON Чтение файлов PySpark DataFrame。

В отличие от чтения CSV, источник данных JSON из входного файла по умолчанию выводит схему.

здесьиспользоватьиз zipcodes.json Файлы можно получить с GitHub Скачать проект.

Портал: https://github.com/spark-examples/pyspark-examples/blob/master/resources/zipcodes.json

Язык кода:javascript
копировать
# Read JSON file into dataframe
df = spark.read.json("PyDataStudio/zipcodes.json")
df.printSchema()
df.show()

когдаиспользовать format("json") Метод, вы также можете указать источник данных по его полному имени, как показано ниже.

Язык кода:javascript
копировать
# Read JSON file into dataframe
df = spark.read.format('org.apache.spark.sql.json') \
        .load("PyDataStudio/zipcodes.json")

Чтение файла JSON из нескольких строк

PySpark JSON данныеисточниксуществоватьдругой Параметрысерединапоставлятьнесколькочитатьдокументиз Параметры,использоватьmultilineПараметрычитатьдисперсиясуществоватьполигамный JSON По умолчанию многострочный параметр имеет значение документ. false。

Ниже приведен входной файл, который мы хотим прочитать. Этот же файл также можно найти на Github.

Портал: https://github.com/spark-examples/pyspark-examples/blob/master/resources/multiline-zipcode.json

Язык кода:javascript
копировать
[{
  "RecordNumber": 2,
  "Zipcode": 704,
  "ZipCodeType": "STANDARD",
  "City": "PASEO COSTA DEL SUR",
  "State": "PR"
},
{
  "RecordNumber": 10,
  "Zipcode": 709,
  "ZipCodeType": "STANDARD",
  "City": "BDA SAN LUIS",
  "State": "PR"
}]

использоватьread.option("multiline","true")

Язык кода:javascript
копировать
# Read multiline json file
multiline_df = spark.read.option("multiline","true") \
      .json("PyDataStudio/multiline-zipcode.json")
multiline_df.show()    

Чтение нескольких файлов одновременно

Достаточно хорошоиспользоватьread.json()методотразные путичитать Несколько JSON файлы, просто передайте все имена файлов с полными путями, разделенными запятыми, например.

Язык кода:javascript
копировать
# Read multiple files
df2 = spark.read.json(
    ['resources/zipcode1.json',
     'resources/zipcode2.json'])
df2.show()  

Прочитать все файлы в каталоге

Только Волякаталог какjson()методизпуть, пройденный кметод,Мы можем получить весь JSON в каталоге Vola Файл, прочитанный в середине DataFrame.

Язык кода:javascript
копировать
# Read all JSON files from a folder
df3 = spark.read.json("resources/*.json")
df3.show()

Чтение файлов с использованием пользовательской схемы

PySpark Schema определяет структуру данных, другими словами, это DataFrame структура. Пи Спарк SQL поставлять StructType и StructField Классы задаются программно DataFrame структура.

если известно заранеедокументиз Архитектураи Не хочуиспользоватьinferSchemaПараметрыуказать Списокитип,пожалуйстаиспользоватьобозначениеиз Настроить СписокschemaииспользоватьschemaПараметрытип。

использовать PySpark StructType Настройка создания классов Схема, давайте запустим этот класс ииспользуем метод add, чтобы добавить в него столбцы, предоставляя имя столбца, тип данных и параметры, допускающие значение NULL.

Язык кода:javascript
копировать
# Define custom schema
schema = StructType([
      StructField("RecordNumber",IntegerType(),True),
      StructField("Zipcode",IntegerType(),True),
      StructField("ZipCodeType",StringType(),True),
      StructField("City",StringType(),True),
      StructField("State",StringType(),True),
      StructField("LocationType",StringType(),True),
      StructField("Lat",DoubleType(),True),
      StructField("Long",DoubleType(),True),
      StructField("Xaxis",IntegerType(),True),
      StructField("Yaxis",DoubleType(),True),
      StructField("Zaxis",DoubleType(),True),
      StructField("WorldRegion",StringType(),True),
      StructField("Country",StringType(),True),
      StructField("LocationText",StringType(),True),
      StructField("Location",StringType(),True),
      StructField("Decommisioned",BooleanType(),True),
      StructField("TaxReturnsFiled",StringType(),True),
      StructField("EstimatedPopulation",IntegerType(),True),
      StructField("TotalWages",IntegerType(),True),
      StructField("Notes",StringType(),True)
  ])

df_with_schema = spark.read.schema(schema) \
        .json("PyDataStudio/zipcodes.json")
df_with_schema.printSchema()
df_with_schema.show()

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

PySpark SQL Также это создает своего рода чтение JSON документизметод,методдаиспользовать spark.sqlContext.sql("будет JSON Загрузить во временное представление") Создать временное представление непосредственно из прочитанного файла

Язык кода:javascript
копировать
spark.sql("CREATE OR REPLACE TEMPORARY VIEW zipcode USING json OPTIONS" + 
      " (path 'PyDataStudio/zipcodes.json')")
spark.sql("select * from zipcode").show()

Параметры при чтении файлов JSON

NullValues

использовать nullValues вариант, вы можете JSON Строка указывается как нулевой. Например, если вы хотите рассмотреть значение 1900-01-01 столбец даты, затем в DataFrame установлен на null。

DateFormat

Параметры dateFormatдля настройки входа DateType и TimestampType Формат столбца Параметры. Поддержать всех java.text.SimpleDateFormat Формат.

Уведомление:В дополнение к вышесказанному Параметрыснаружи,PySpark JSON набор данных также поддерживает множество других параметров.

Применить преобразование DataFrame

от JSON Создание файла PySpark DataFrame После этого вы можете подать заявку DataFrame поддерживатьизвсе Конвертироватьидействовать。

Запись PySpark DataFrame в файл JSON

существовать DataFrame начальствоиспользовать PySpark DataFrameWriter объект write Написание метода JSON документ.

Язык кода:javascript
копировать
df2.write.json("/PyDataStudio/spark_output/zipcodes.json")

Параметры PySpark при записи файлов JSON

существоватьписать JSON При документировании вы можете использовать несколько параметров. nullValue,dateFormat

Режим сохранения PySpark

PySpark DataFrameWriter Есть другой способ mode() указать SaveMode;этотметодиз Принятые параметрыoverwrite, append, ignore, errorifexists.

  • overwrite – Режим используется для перезаписи существующих файлов.
  • append – Воляданные добавлены в существующий документ
  • ignore – Игнорировать операцию записи, если документ уже существует.
  • errorifexists или error – Это параметр по умолчанию, когда документ уже сохранен, он возвращает ошибку.
Язык кода:javascript
копировать
 df2.write.mode('Overwrite') \
       .json("/PyDataStudio/spark_output/zipcodes.json")

Исходный код для справки

Этот пример также работаетсуществоватьGitHub PySpark Пример проекта доступен для справки.

Язык кода:javascript
копировать
# https://github.com/spark-examples/pyspark-examples/blob/master/pyspark-read-json.py
from pyspark.sql import SparkSession
from pyspark.sql.types import StructType,StructField, StringType, IntegerType,BooleanType,DoubleType
spark = SparkSession.builder \
    .master("local[1]") \
    .appName("SparkByExamples.com") \
    .getOrCreate()

# Read JSON file into dataframe    
df = spark.read.json("PyDataStudio/zipcodes.json")
df.printSchema()
df.show()

# Read multiline json file
multiline_df = spark.read.option("multiline","true") \
      .json("PyDataStudio/multiline-zipcode.json")
multiline_df.show()

#Read multiple files
df2 = spark.read.json(
    ['PyDataStudio/zipcode2.json','PyDataStudio/zipcode1.json'])
df2.show()    

#Read All JSON files from a directory
df3 = spark.read.json("PyDataStudio/*.json")
df3.show()

# Define custom schema
schema = StructType([
      StructField("RecordNumber",IntegerType(),True),
      StructField("Zipcode",IntegerType(),True),
      StructField("ZipCodeType",StringType(),True),
      StructField("City",StringType(),True),
      StructField("State",StringType(),True),
      StructField("LocationType",StringType(),True),
      StructField("Lat",DoubleType(),True),
      StructField("Long",DoubleType(),True),
      StructField("Xaxis",IntegerType(),True),
      StructField("Yaxis",DoubleType(),True),
      StructField("Zaxis",DoubleType(),True),
      StructField("WorldRegion",StringType(),True),
      StructField("Country",StringType(),True),
      StructField("LocationText",StringType(),True),
      StructField("Location",StringType(),True),
      StructField("Decommisioned",BooleanType(),True),
      StructField("TaxReturnsFiled",StringType(),True),
      StructField("EstimatedPopulation",IntegerType(),True),
      StructField("TotalWages",IntegerType(),True),
      StructField("Notes",StringType(),True)
  ])

df_with_schema = spark.read.schema(schema) \
        .json("PyDataStudio/zipcodes.json")
df_with_schema.printSchema()
df_with_schema.show()

# Create a table from Parquet File
spark.sql("CREATE OR REPLACE TEMPORARY VIEW zipcode3 USING json OPTIONS" + 
      " (path 'PyDataStudio/zipcodes.json')")
spark.sql("select * from zipcode3").show()

# PySpark write Parquet File
df2.write.mode('Overwrite').json("/PyDataStudio/spark_output/zipcodes.json")

Связанное чтение: PySpark Читай и пиши CSV файл в DataFrame

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose