Перейти к содержимому

Учебное пособие по PySpark: как преобразовать сложный вложенный JSON в StructType в Databricks

sumit kumar

0:00 / 0:00

Учебное пособие по PySpark: как преобразовать сложный вложенный JSON в StructType в Databricks

1 063 просмотра · 10 месяцев назад
sumit kumar
2,02 тыс. подписчиков
1 063 просмотра · 10 месяцев назад
В этом подробном руководстве по PySpark вы изучите передовые практики обработки сложных вложенных JSON-данных в среде Databricks. Мы рассмотрим реальный сценарий, включающий вложенные структуры (например, данные клиентов, адреса и списки заказов/товаров), и преобразуем этот полуструктурированный JSON-файл в высокоэффективный структурированный DataFrame PySpark. Что вы изучите: Определение структурированной схемы: пошаговое руководство по определению точных StructType и ArrayType для глубоко вложенных JSON-данных. Простой способ (вывод схемы): как использовать встроенную функциональность Databricks/Spark для автоматического вывода схемы из вашего образца JSON-данных. Парсинг с явной схемой: код Databricks PySpark для загрузки JSON-данных с использованием тщательно определенной схемы для обеспечения надежности производственных конвейеров. json_data = [ { "customer_id": 101, "status": "active", "name": {"first": "John", "last": "Doe"}, "address": {"street": "123 Elm St", "city": "Springfield", "zip": "62704"}, "orders": [ { "order_id": "A001", "amount": 250, "items": [ {"product": "Laptop", "qty": 1}, {"product": "Mouse", "qty": 2} ] }, { "order_id": "A002", "amount": 150, "items": [ {"product": "Keyboard", "qty": 1} ] } ] }, { "customer_id": 102, "status": "active", "name": {"first": "John1", "last": "Doe1"}, "address": {"street": "123 Elm St", "city": "Springfield", "zip": "62704"}, "orders": [ { "order_id": "A003", "amount": 250, "items": [ {"product": "Laptop", "qty": 1}, {"product": "Mouse", "qty": 2} ] }, { "order_id": "A004", "amount": 150, "items": [ {"product": "Keyboard", "qty": 1} ] } ] } ] из pyspark.sql import SparkSession из pyspark.sql.functions import Explode, col из pyspark.sql.types import StructType, StructField, StringType, IntegerType, ArrayType schema = StructType([ StructField("customer_id", IntegerType(), True), StructField("status", StringType(), True), StructField("name", StructType([ StructField("first", StringType(), True), StructField("last", StringType(), True) ]), True), StructField("address", StructType([ StructField("street", StringType(), True), StructField("city", StringType(), True), StructField("zip", StringType(), True) ]), True), StructField("orders", ArrayType(StructType([ StructField("order_id", StringType(), True), StructField("amount", IntegerType(), True), StructField("items", ArrayType(StructType([ StructField("product", StringType(), True), StructField("qty", IntegerType(), True) ])), True) ])), True) ]) Создать DataFrame из JSON со схемой df = spark.createDataFrame(json_data, schema=schema)