Megosztás a következőn keresztül:


Összetett adattípusok átalakítása

A beágyazott adattípusok használata során az Azure Databricks bizonyos átalakításokat beépítetten optimalizál. Az alábbi példakódok az Azure Databricks összetett és beágyazott adattípusaival végzett munka mintáit mutatják be.

Pont jelölése beágyazott adatok eléréséhez

A beágyazott mezők eléréséhez használhatja a pontjelet (.) is.

Python

df.select("column_name.nested_field")

SQL

SELECT column_name.nested_field FROM table_name

Az összes beágyazott mező kijelölése

A csillag operátorral (*) kijelölheti az adott mező összes mezőjét.

Feljegyzés

Ez csak a megadott mélységben csomagolja ki a beágyazott mezőket.

Python

df.select("column_name.*")

SQL

SELECT column_name.* FROM table_name

Új beágyazott mező létrehozása

struct() A függvény használatával hozzon létre egy új beágyazott mezőt.

Python

from pyspark.sql.functions import struct, col

df.select(struct(col("field_to_nest").alias("nested_field")).alias("column_name"))

SQL

SELECT struct(field_to_nest AS nested_field) AS column_name FROM table_name

Az összes mező beágyazása egy oszlopba

A csillag operátorral (*) egyetlen oszlopként ágyazhatja be az adatforrás összes mezőjét.

Python

from pyspark.sql.functions import struct

df.select(struct("*").alias("column_name"))

SQL

SELECT struct(*) AS column_name FROM table_name

Névvel ellátott mező kijelölése beágyazott oszlopból

Szögletes zárójelek [] használatával jelöljön ki beágyazott mezőket egy oszlopból.

Python

from pyspark.sql.functions import col

df.select(col("column_name")["field_name"])

SQL

SELECT column_name["field_name"] FROM table_name

Beágyazott elemek robbantása térképről vagy tömbből

A függvény használatával explode() kicsomagolhatja az értékeket az oszlopokból ARRAY , és MAP beírhatja az oszlopokat.

ARRAY az oszlopok listaként tárolják az értékeket. A kicsomagoláskor explode()minden érték a kimenet sorává válik.

Python

from pyspark.sql.functions import explode

df.select(explode("array_name").alias("column_name"))

SQL

SELECT explode(array_name) AS column_name FROM table_name

MAP az oszlopok rendezett kulcs-érték párokként tárolják az értékeket. Ha ki van csomagolva, explode()minden kulcs oszlopmá válik, az értékek pedig sorokká.

Python

from pyspark.sql.functions import explode

df.select(explode("map_name").alias("column1_name", "column2_name"))

SQL

SELECT explode(map_name) AS (column1_name, column2_name) FROM table_name

Tömb létrehozása listából vagy csoportból

Használja a függvényeket collect_list() , vagy collect_set() alakítsa át egy oszlop értékeit tömbökké. collect_list() összegyűjti az oszlop összes értékét, míg collect_set() csak az egyedi értékeket.

Feljegyzés

A Spark nem garantálja a tömb elemeinek egyik műveletből eredő sorrendjét sem.

Python

from pyspark.sql.functions import collect_list, collect_set

df.select(collect_list("column_name").alias("array_name"))
df.select(collect_set("column_name").alias("set_name"))

SQL

SELECT collect_list(column_name) AS array_name FROM table_name;
SELECT collect_set(column_name) AS set_name FROM table_name;

Oszlop kijelölése egy tömb térképéből

A tömbökben található térképek mezőinek eléréséhez a pont jelölés (.) is használható. Ez egy tömböt ad vissza a megadott mező összes értékéből.

Vegye figyelembe a következő adatstruktúrát:

{
  "column_name": [
    {"field1": 1, "field2":"a"},
    {"field1": 2, "field2":"b"}
  ]
}

Az értékeket field1 tömbként a következő lekérdezéssel lehet visszaadni:

Python

df.select("column_name.field1")

SQL

SELECT column_name.field1 FROM table_name

Beágyazott adatok átalakítása JSON-ra

A függvény használatával to_json összetett adattípust alakíthat át JSON-ra.

Python

from pyspark.sql.functions import to_json

df.select(to_json("column_name").alias("json_name"))

SQL

SELECT to_json(column_name) AS json_name FROM table_name

A lekérdezés vagy a DataFrame összes tartalmának kódolásához kombinálja ezt a lekérdezéssel struct(*).

Python

from pyspark.sql.functions import to_json, struct

df.select(to_json(struct("*")).alias("json_name"))

SQL

SELECT to_json(struct(*)) AS json_name FROM table_name

Feljegyzés

Az Azure Databricks emellett támogatja to_avro és to_protobuf átalakítja az összetett adattípusokat az integrált rendszerekkel való együttműködés érdekében.

JSON-adatok átalakítása összetett adatokká

A függvény használatával from_json a JSON-adatokat natív összetett adattípusokká konvertálhatja.

Feljegyzés

Meg kell adnia a JSON-adatok sémáját.

Python

from pyspark.sql.functions import from_json

schema = "column1 STRING, column2 DOUBLE"

df.select(from_json("json_name", schema).alias("column_name"))

SQL

SELECT from_json(json_name, "column1 STRING, column2 DOUBLE") AS column_name FROM table_name

Jegyzetfüzet: összetett adattípusok átalakítása

Az alábbi jegyzetfüzetek példákat nyújtanak a Python, a Scala és az SQL összetett adattípusainak használatára.

Összetett adattípusok átalakítása Python-jegyzetfüzetben

Jegyzetfüzet beszerzése

Összetett adattípusok átalakítása Scala-jegyzetfüzet

Jegyzetfüzet beszerzése

Összetett adattípusok átalakítása SQL-jegyzetfüzetben

Jegyzetfüzet beszerzése