Kurs
CREATE TABLE in Databricks: Eine umfassende Anleitung zum Erstellen und Verwalten von Tabellen
Databricks Tabellen sind eine Kernkomponente der Databricks Lakehouse Plattform, die für die Speicherung und Verarbeitung großer Datenmengen entwickelt wurde. Diese Tabellen ermöglichen eine teamübergreifende Zusammenarbeit, indem sie strukturierte und unstrukturierte Daten zusammenführen und gleichzeitig analytische Workloads unterstützen.
In diesem Artikel führe ich dich durch die verschiedenen Techniken zur Erstellung von Tabellen in Databricks mit dem Befehl CREATE TABLE
. Dabei gibt es mehrere Syntaxvarianten, um verschiedenen Anwendungsfällen gerecht zu werden. Außerdem gebe ich dir Tipps, wie du Tabellen in Databricks am effizientesten und zuverlässigsten erstellen und verwalten kannst.
Für den Anfang empfehle ich dir einen Blick auf DataCamps How to Learn Databricks: Der Blogbeitrag A Beginner's Guide to the Unified Data Platform hilft dir, die wichtigsten Funktionen und Anwendungen von Databricks zu verstehen und bietet dir einen strukturierten Weg, um mit dem Lernen zu beginnen. Ich empfehle dir auch unseren Kurs Einführung in Databricks zu besuchen. Auch wenn du Erfahrung mit SQL hast, wirst du sehen, dass die Dinge auf der Databricks Lakehouse-Plattform anders aussehen können. Die interaktiven Übungen in unserem Kurs führen dich durch SQL-Abfragen sowie durch Plattformfunktionen und externe Systemverbindungen.
Einführung in Databricks Tabellen
Zunächst einmal sollten wir sagen, dass Databricks Tabellen strukturierte Datensätze sind, die die Datenorganisation und den Zugriff innerhalb der Databricks Lakehouse Umgebung erleichtern. Es gibt zwei Arten:
- Verwaltete Tabellen: Diese Tabellen werden vollständig von Databricks kontrolliert, das sowohl die Speicherung als auch die Metadaten verwaltet. Wenn eine verwaltete Tabelle erstellt wird, kümmert sich Databricks um die zugrunde liegenden Datendateien, und wenn die Tabelle gelöscht wird, werden auch die entsprechenden Daten entfernt.
- Externe Tabellen: Externe Tabellen verweisen auf Daten, die sich außerhalb von Databricks befinden, in der Regel in Cloud-Speichersystemen wie AWS S3 oder Azure Blob Storage. Während Databricks die Metadaten für diese Tabellen verwaltet, bleiben die eigentlichen Daten intakt, auch wenn die Tabelle gelöscht wird. Diese werden auch als unverwaltete Tabellen bezeichnet.
Tabellen in Databricks sind aufgrund ihrer fortschrittlichen Funktionen und Optimierungen oft auf Delta Lake voreingestellt. Delta Lake bietet ACID-Transaktionen,Skalierbarkeit,Leistungsverbesserungen wie Optimierungen wie Caching und Indizierung sowieeine einheitliche Batch- und Streaming-Datenverarbeitung.
In den frühen Versionen von Azure Databricks wurden noch die alten Tabellen im "Hive-Format" verwendet, die durch die modernen Delta-Tabellen ersetzt wurden. Insgesamt übertreffen moderne Delta-Tabellen die alten Hive-Tabellen an Zuverlässigkeit und Leistung, was sie zur Standardwahl für Databricks-Workflows macht.
Hier ist eine Zusammenfassung, die dir helfen könnte, den Unterschied zwischen den beiden zu erkennen:
Feature | Tabelle für das Hive-Format | Delta-Tabelle |
---|---|---|
Datenformat | Apache Hive (CSV, Parquet, ORC, etc.) | Delta Lake (basierend auf Parquet mit Metadaten) |
Transaktionen | Keine ACID-Unterstützung (eventuelle Konsistenz) | Vollständige ACID-Transaktionen |
Schema-Management | Begrenzte Durchsetzung | Strikte Durchsetzung des Schemas |
Leistungsoptimierung | Manuelle Abstimmung erforderlich | Eingebaute Optimierungen (Zwischenspeicherung, Verdichtung) |
Zeitreise | Keine integrierte Unterstützung für historische Abfragen | Unterstützt Zeitreisen zur Abfrage früherer Versionen von Daten |
Gleichzeitigkeit | Anfällig für Konflikte bei Aktualisierungen oder Löschungen | Effizienter Umgang mit gleichzeitigen Operationen |
CREATE TABLE Syntax Variationen
Der Befehl CREATE TABLE
in Databricks unterstützt mehrere Varianten, um verschiedenen Fällen gerecht zu werden. Jede Variante hat ihren Zweck, mit gezielten Optionen wie Dateispeicherort, Klonen und Metadatenverwaltung. Wenn du dein Wissen über Databricks SQL auffrischen möchtest, empfehle ich dir, unser Databricks SQL-Tutorial zu lesen, in dem du unter anderem erfährst, wie du ein Notebook in einem Databricks SQL-Warehouse verwenden kannst.
Im Folgenden findest du die wichtigsten Syntaxarten mit Beispielen und Erklärungen.
TABELLE ERSTELLEN [MIT]
Diese Syntax erstellt eine neue Tabelle mit einem bestimmten Schema und Datenformat. Die folgende Abfrage erstellt eine Tabelle mit dem Namen sales_data
, indem sie Daten aus Parkettdateien liest, die an einem bestimmten Ort gespeichert sind.
-- Create a table from files in a specific format
CREATE TABLE sales_data
USING PARQUET
LOCATION '/mnt/data/sales';
CREATE TABLE (Hive-Format)
Diese Legacy-Syntax ähnelt dem Standard-SQL-Befehl CREATE TABLE
, der bei der Definition einer Tabelle mit von Databricks verwalteten Metadaten verwendet wird, ohne dass auf externe Dateien verwiesen werden muss. Die folgende Abfrage erstellt eine Tabelle im Hive-Stil namens hive_table
mit einem vordefinierten Schema und zusätzlichen Metadateneigenschaften.
-- Hive-style table creation with schema definition
CREATE TABLE hive_table (
id INT,
name STRING
)
COMMENT 'Hive format example'
TBLPROPERTIES ('created_by' = 'databricks');
In der obigen Abfrage fügt die Klausel COMMENT
beschreibende Metadaten hinzu, während TBLPROPERTIES
benutzerdefinierte Eigenschaften über die Tabelle speichert.
TABELLE ERSTELLEN WIE
Dieser Befehl erstellt eine neue Tabelle unter Verwendung des Schemas und der Eigenschaften einer bestehenden Tabelle. Du solltest diese Syntax verwenden, wenn du die Struktur einer bestehenden Tabelle replizieren willst, ohne ihre Daten zu kopieren. Dies ist für Test- oder Entwicklungszwecke nützlich.
-- Create a table with the same schema as another table
CREATE TABLE new_table LIKE existing_table;
TABELLE ERSTELLEN KLON
Mit dieser Syntax kannst du eine neue Tabelle erstellen, indem du eine bestehende Delta Lake-Tabelle klonst, entweder als tiefen oder flachen Klon. Daher solltest du die CREATE TABLE CLONE
Syntax verwenden, wenn du eine unabhängige Kopie der Daten und Metadaten einer Tabelle (deep clone) oder nur die Metadaten mit Verweis auf die Originaldaten (shallow clone) benötigst. Denke darüber nach, wenn es um die Versionierung oder das Erstellen von Backups geht.
Das folgende Beispiel zeigt die Abfragen zum Erstellen von Deep Clone- und shallow Clone-Tabellen in Databricks.
-- Deep clone by default
CREATE TABLE cloned_table CLONE original_table;
-- Shallow clone
CREATE TABLE shallow_clone_table SHALLOW CLONE original_table;
TABELLE ERSTELLEN ODER ERSETZEN
Dieser einzelne, kombinierte Befehl ersetzt eine bestehende Tabelle durch eine neue, wobei derselbe Tabellenname beibehalten wird, als ein einziger Vorgang. Diese Syntax solltest du verwenden, wenn du eine bestehende Tabelle vollständig überschreiben und ihren Namen beibehalten willst. Dies ist besonders nützlich, um die Struktur oder die Daten einer Tabelle zu aktualisieren, ohne sie vorher löschen zu müssen.
Die folgende Beispielabfrage erstellt oder ersetzt die Tabelle sales
mit einem neuen Schema.
-- Create or replace a sales table with a new schema
CREATE OR REPLACE TABLE sales (
sale_id INT,
amount FLOAT
)
USING DELTA
LOCATION '/mnt/delta/sales';
Es gibt weitere relevante Klauseln, die du mit der CREATE TABLE
Syntax in Databricks verwenden kannst, um deine Tabellen nach bestimmten Anforderungen zu verwalten. Im Folgenden findest du eine Zusammenfassung der Verwendung dieser Klauseln. Ich habe nur einige, aber nicht alle davon bereits als Beispiele verwendet.
-
IF NOT EXISTS
: Vermeidet Fehler, indem die Erstellung der Tabelle übersprungen wird, wenn sie bereits existiert. -
USING
: Gibt das Dateiformat an (z. B. Delta, Parquet, CSV). -
EXTERNAL
: Deklariert eine Tabelle, in der sich Daten außerhalb des von Databricks verwalteten Speichers befinden. -
PARTITIONED BY
: Definiert Partitionen für die Optimierung großer Datensätze. -
LOCATION
: Zeigt auf das Verzeichnis, das die Daten der Tabelle enthält. -
TBLPROPERTIES
: Fügt Metadaten für benutzerdefinierte Tabellenkonfigurationen und Optimierungen hinzu.
Schritt-für-Schritt-Demonstrationen
In diesem Abschnitt zeige ich dir verschiedene Möglichkeiten, Tabellen in Databricks zu erstellen und zu verwalten, mit prägnanten Beispielen und Erklärungen der wichtigsten Klauseln. Ich empfehle dir unser Databricks Tutorial: 7 Konzepte, die jeder Datenspezialist kennen muss Tutorial, um zu lernen, wie man SQL-Befehle auf der Databricks-Plattform ausführt.
Wie man eine leere Tabelle erstellt
Um eine leere Delta-Tabelle zu erstellen, definierst du das Tabellenschema mit Spaltennamen und Datentypen. Verwende die USING DELTA
Klausel, um das Format der Tabelle zu definieren und COMMENT
, um beschreibende Metadaten hinzuzufügen.
Diese Abfrage erstellt eine leere Delta-Tabelle namens employees
mit einem vordefinierten Schema, das Spalten für id
, name
, department
und hire_date
enthält.
-- Create an empty Delta table with a defined schema
CREATE TABLE employees (
id BIGINT,
name STRING,
department STRING,
hire_date DATE
)
USING DELTA
COMMENT 'Table to store employee information';
Wie man eine Tabelle aus vorhandenen Daten erstellt
Um eine Tabelle aus vorhandenen Daten zu erstellen, verknüpfst du die Tabelle mit externen Datendateien in Formaten wie CSV, Parquet oder JSON. Du kannst die LOCATION
Klausel verwenden, um die Tabelle mit dem Dateipfad zu verknüpfen, und die USING
Klausel, um das Datenformat anzugeben.
Die folgende Abfrage erstellt zum Beispiel eine Tabelle mit dem Namen sales_data
, indem sie auf die unter /mnt/data/sales_data/
gespeicherten Parkettdateien verweist.
-- Create a table from Parquet files in a specified location
CREATE TABLE sales_data
USING PARQUET
LOCATION '/mnt/data/sales_data/';
Wie man eine Tabelle als Select erstellt (CTAS)
Du kannst eine Tabelle auch als Select erstellen, indem du eine Abfrage ausführst und das Ergebnis speicherst. In diesem Szenario füllt die AS SELECT
Klausel die Tabelle mit dem Abfrageergebnis auf.
Die folgende Abfrage erstellt zum Beispiel eine neue Tabelle mit dem Namen high_value_sales
, indem sie Daten aus der bestehenden Tabelle sales_data
auswählt und umwandelt. Sie filtert Zeilen, in denen total_amount
größer als 1000 ist, und behält nur die Spalten sale_id
, customer_id
und total_amount
bei.
-- Create a table by selecting and transforming data from another table
CREATE TABLE high_value_sales AS
SELECT
sale_id,
customer_id,
total_amount
FROM sales_data
WHERE total_amount > 1000;
Wie man eine externe Tabelle erstellt
Beim Erstellen einer externen Tabelle wird auf Daten verwiesen, die außerhalb des verwalteten Speichers von Databricks gespeichert sind. Du solltest die LOCATION
Klausel verwenden, um den Speicherort der externen Daten anzugeben.
Die folgende Abfrage erstellt eine externe Delta-Tabelle namens external_table
, indem sie auf die unter /mnt/external_storage/external_table/
gespeicherten Daten verweist.
-- Create an external table referencing data outside Databricks storage
CREATE TABLE external_table
USING DELTA
LOCATION '/mnt/external_storage/external_table/';
Wie man eine Tabelle LIKE erstellt
Um eine Tabelle LIKE
zu erstellen, dupliziere das Schema einer bestehenden Tabelle, ohne ihre Daten zu kopieren. Im folgenden Beispiel erstellt die Abfrage eine neue Tabelle mit dem Namen sales_backup
, die dasselbe Schema hat wie eine bestehende Tabelle sales
.
-- Create a new sales table with the same schema as an existing table
CREATE TABLE sales_backup LIKE sales;
Wie man TABLE CLONE erstellt
Mit der CLONE
Klausel kannst du einen Tabellenklon erstellen, um eine flache oder tiefe Kopie einer Delta-Tabelle für Backups oder Tests zu erstellen.
Im folgenden Beispiel erstellt die Abfrage eine neue Tabelle, sales_shallow_clone,
kopiert nur die Metadaten (Schema und Eigenschaften der Tabelle).
-- Shallow clone: Copies only metadata (references original data)
CREATE TABLE sales_shallow_clone CLONE sales_data;
Das folgende Beispiel erstellt eine neue Tabelle, sales_deep_clone
, kopiert aber sowohl die Metadaten als auch die eigentlichen Daten.
-- Deep clone: Copies both metadata and actual data
CREATE TABLE sales_deep_clone CLONE sales_data DEEP;
So erstellst du eine temporäre Tabelle (temp-Tabelle)
Verwende die TEMPORARY
Klausel, wenn du temporäre Tabellen erstellst, um sicherzustellen, dass die Tabelle sitzungsspezifisch ist.
Die folgende Abfrage erstellt eine temporäre Tabelle namens temp_table
, die nur für die aktuelle Sitzung existiert. Er wählt id
, name
und sales_amount
aus sales_data
aus und filtert nach Zeilen, in denen region = 'US'
.
-- Create a temporary table that exists only in the session
CREATE TEMPORARY TABLE temp_table AS
SELECT
id,
name,
sales_amount
FROM sales_data
WHERE region = 'US';
Wie man eine Tabelle ersetzt
Du kannst die CREATE OR REPLACE
Klausel verwenden, um die Definition und den Inhalt der Tabelle zu ersetzen. Die folgende Abfrage ersetzt die bestehende Tabelle updated_table
durch ein neues Schema und neue Daten. Sie definiert die Tabelle mit drei Spalten (id
, name
, total_sales
).
-- Replace an existing table with a new schema or data
CREATE OR REPLACE TABLE updated_table (
id BIGINT,
name STRING,
total_sales DOUBLE
)
USING DELTA
LOCATION '/mnt/delta/updated_table/';
Fortgeschrittene Themen
In diesem Abschnitt gehe ich auf erweiterte Tabellenfunktionen von Databricks ein, die die Funktionalität, Leistung und Sicherheit verbessern.
Generierte Spalten und Identitätsspalten
Databricks unterstützt Identitätsspalten, die automatisch eindeutige Werte für jede neue Zeile erzeugen. Diese Funktion ist nützlich für die Erstellung von Ersatzschlüsseln im Data Warehousing.
Die folgende Abfrage erstellt eine Tabelle employees
mit drei Spalten: id
, name
, und department
. Die Spalte id
ist eine Identitätsspalte, die mit jeder neuen Zeile automatisch erhöht wird.
-- Identity column: auto-incremented value
CREATE TABLE employees (
id BIGINT GENERATED ALWAYS AS IDENTITY, -- Auto-incremented column
name STRING,
department STRING
);
Diese andere Abfrage erstellt eine Tabelle sales
mit drei Spalten: sale_id
, sale_date
, und sale_year
. Die Spalte sale_year
wird mit Hilfe der Funktion YEAR(sale_date)
auf der Grundlage der Spalte sale_date
erstellt und automatisch berechnet.
-- Generated column: derived from other columns
CREATE TABLE sales (
sale_id BIGINT,
sale_date DATE,
sale_year INT GENERATED ALWAYS AS (YEAR(sale_date)) -- Derived column
);
Partitionierung und Clustering
Bei der Partitionierung werden die Daten in kleinere Stücke aufgeteilt, um die Abfrageleistung zu verbessern, während beim Clustering die Daten innerhalb der Partitionen organisiert werden, damit sie schneller gelesen werden können.
Die folgende Abfrage erstellt zum Beispiel eine partitionierte Tabelle, in der die Daten anhand der Spalte region
in Partitionen aufgeteilt werden, was die Abfrageleistung beim Filtern nach Regionen verbessert.
-- Partitioned table
CREATE TABLE partitioned_table (
id BIGINT,
region STRING,
sales_amount DOUBLE
)
USING DELTA
PARTITIONED BY (region); -- Querying by region will be faster
Die folgende Abfrage optimiert die partitionierte Tabelle, indem sie die Daten innerhalb jeder Partition auf der Grundlage der Spalte sales_amount
clustert. Es macht Abfragen auf sales_amount
schneller, indem es das Datenlayout für effizientes Lesen verbessert. Die ZORDER BY
Klausel arbeitet innerhalb von Partitionen, um die Leseleistung zu verbessern, indem sie Daten innerhalb von Partitionen clustert, nicht über Partitionen hinweg.
-- Clustered table
OPTIMIZE partitioned_table
ZORDER BY (sales_amount); -- Clusters data within partitions for efficient reads
Spaltenmaskierung und Zeilenfilter
Spaltenmaskierung und Zeilenfilter schränken die Sichtbarkeit von Daten auf der Grundlage von Benutzerrollen oder Bedingungen ein und schützen so sensible Informationen.
Die folgende Abfrage erstellt zum Beispiel eine maskierte Ansicht mit dem Namen masked_table
auf der Grundlage der Tabelle employees
. Die Spalte salary
wird für alle Benutzer mit Ausnahme derjenigen mit der Rolle manager
geschwärzt (durch REDACTED
ersetzt). Die Anweisung CASE
stellt sicher, dass nur Manager das tatsächliche Gehalt sehen können, während andere die maskierten Daten sehen
-- Column masking: Redact sensitive data
CREATE MASKED VIEW masked_table AS
SELECT
id,
name,
CASE
WHEN current_user() = 'manager' THEN salary
ELSE 'REDACTED'
END AS salary
FROM employees;
In ähnlicher Weise verwendet die folgende Abfrage Zeilenfilter, um eine Ansicht mit dem Namen filtered_table
auf der Grundlage der Tabelle sales
zu erstellen oder zu ersetzen. Die Ansicht filtert die Zeilen so, dass nur Daten mit region = 'US'
angezeigt werden.
-- Row filters: Fine-grained access control
CREATE OR REPLACE VIEW filtered_table AS
SELECT *
FROM sales
WHERE region = 'US'; -- Limit data visibility to a specific region
Schema-Bewertung
Databricks unterstützt die Weiterentwicklung des Schemas durch CREATE OR REPLACE TABLE
und Änderungen an den Tabellen. Du solltest die Anweisung CREATE OR REPLACE TABLE
verwenden, um das Schema und die Daten zu überschreiben, und die Anweisung ALTER TABLE
, um das Schema schrittweise zu ändern, ohne die Daten zu beeinflussen.
Die folgende Abfrage ersetzt die bestehende Tabelle employees
durch ein neues Schema und fügt eine neue Spalte hire_date
hinzu, während die Daten im Delta-Format gespeichert bleiben.
-- Schema evolution with CREATE OR REPLACE TABLE
CREATE OR REPLACE TABLE employees (
id BIGINT,
name STRING,
department STRING,
hire_date DATE -- New column added
)
USING DELTA;
Diese andere Abfrage ändert die Tabelle employees
, indem sie eine neue Spalte salary
in das bestehende Schema einfügt.
-- Altering a table schema
ALTER TABLE employees ADD COLUMNS (salary DOUBLE);
Leistungsoptimierung
Um die Leistung von großen Tabellen zu optimieren, kannst du verschiedene Tabelleneigenschaften und Techniken wie die automatische Optimierung und die Z-Reihenfolge nutzen.
Im folgenden Beispiel aktiviert die Abfrage die Auto-Optimierung auf delta_table
, indem sie die Eigenschaften so einstellt, dass kleine Dateien automatisch komprimiert und Dateien beim Schreiben zusammengeführt werden, um die Speichereffizienz zu verbessern.
-- Enable automatic optimizations
ALTER TABLE delta_table
SET TBLPROPERTIES (
'delta.autoOptimize.optimizeWrite' = 'true', -- Automatically compact small files
'delta.autoOptimize.autoCompact' = 'true' -- Automatically merge files
);
In ähnlicher Weise optimiert die folgende Abfrage die delta_table
, indem sie die Daten auf der Grundlage von region
und sales_date
clustert, um die Abfrageleistung zu verbessern, insbesondere bei Filtern für diese Spalten.
-- Perform clustering for faster query performance
OPTIMIZE delta_table
ZORDER BY (region, sales_date); -- Improves query efficiency for frequent filters
Bewährte Praktiken und Überlegungen
Hier sind einige Dinge, die du beim Erstellen von Tabellen in Databricks beachten solltest, damit du alles richtig machst:
- Konventionen für die Benennung von Tabellen: Verwende immer klare und einheitliche Namen, um die Auffindbarkeit zu verbessern und Fehler zu vermeiden. Vermeide Sonderzeichen oder übermäßig lange Namen, um Kompatibilitätsprobleme zu vermeiden.
- Sicherheit und Berechtigungen: Nutze den Unity Catalog für eine zentrale Zugriffskontrolle auf alle Datenbestände. Verwende Zugriffskontrolllisten (ACLs), um einzuschränken, wer Daten sehen oder ändern darf. Maskiere außerdem sensible Daten mit Spaltenmaskierung oder Zeilenfiltern.
- Sicherung und Wiederherstellung: Verlasse dich auf die Versionsgeschichte von Delta Lake, um dich leicht zu erholen und durch die Zeit zu reisen. Überprüfe und verwalte regelmäßig die Aufbewahrung historischer Versionen, um Speicherkosten und Wiederherstellungsbedarf auszugleichen.
- Verwaltete vs. externe Tabellen: Es ist auch wichtig zu wissen, was verwaltete und was externe Tabellen sind. In verwalteten Tabellen verwaltet Databricks sowohl die Metadaten als auch die Daten. Dies ist ideal für Szenarien, in denen du die volle Kontrolle über das Datenlebenszyklusmanagement haben möchtest. In externen Tabellen werden die referenzierten Daten jedoch außerhalb von Databricks gespeichert. Dies ist nützlich, um die Kontrolle über Daten zu behalten, die über verschiedene Plattformen oder Systeme hinweg geteilt werden.
Häufige Fallstricke und Fehlerbehebung
Nachdem wir nun die besten Praktiken für die Verwaltung von Tabellen in Databricks besprochen haben, möchte ich auf die häufigsten Probleme eingehen, die bei Databricks-Tabellen auftreten können, sowie auf die typischen Fehlermeldungen und die Lösungen.
Nicht leere Speicherplatzfehler bei der Verwendung von CREATE vs. ERSTELLEN ODER ERSETZEN
Wenn du CREATE TABLE
mit einem bestimmten Ort (LOCATION
Klausel) verwendest und das Verzeichnis nicht leer ist, kann eine Fehlermeldung wie diese auftreten:
Error: Cannot create table because the location is not empty.
Dieser Fehler tritt auf, weil der Befehl CREATE TABLE
ein leeres Verzeichnis für den angegebenen Speicherort erwartet, aber vorhandene Dateien oder Metadaten dieser Anforderung widersprechen.
Um diesen Fehler zu beheben, verwende die Anweisung CREATE OR REPLACE TABLE
, um bestehende Daten und Metadaten zu überschreiben. Oder du räumst das Verzeichnis manuell auf, bevor du die Anweisung CREATE TABLE
verwendest.
CREATE OR REPLACE TABLE delta_table
USING DELTA
LOCATION '/mnt/data/delta_table'; -- Overwrites table and files
Schema-Unstimmigkeiten oder Probleme mit bestimmten Datentypen
Das Einfügen oder Abfragen von Daten führt zu Schema-Mismatch-Fehlern wie:
Error: Schema mismatch: Expected column type STRING, but found INT.
Der Fehler könnte durch eine Unstimmigkeit zwischen dem Schema der Tabelle und den eingehenden Datentypen verursacht werden. Außerdem können nicht unterstützte oder zweideutige Datentypkonvertierungen (z. B. komplexe verschachtelte Typen) zu einer Schemafehlanpassung führen. Um diesen Fehler zu beheben, erzwinge den Schemaabgleich, um das Schema bei der Tabellenerstellung zu überprüfen, oder verwende die Schemaerzwingung in Delta-Tabellen.
-- Enforce schema matching during table creation
CREATE TABLE schema_table (
id INT,
name STRING
)
USING DELTA
TBLPROPERTIES ('delta.schema.enforce' = 'true'); -- Enforces strict schema
Außerdem solltest du eine Schemaentwicklung zulassen, wenn du neue Spalten hinzufügst oder Datentypen änderst.
ALTER TABLE schema_table ADD COLUMNS (new_column DOUBLE);
Die Verwendung von explizitem Typ-Casting beim Einfügen von Daten sollte ebenfalls helfen, diese Art von Fehler zu beheben.
INSERT INTO schema_table SELECT CAST(id AS INT), CAST(name AS STRING) FROM source_table;
Einschränkungen bei gleichzeitigen Transaktionen mit Identitätsspalten
Bei der Verwendung von Identitätsspalten können Probleme im Zusammenhang mit gleichzeitigen Transaktionen auftreten, wie z. B:
Error: Concurrent transactions detected on identity column table
Identitätsspalten sind zustandsabhängig und können in Konflikt geraten, wenn mehrere Transaktionen gleichzeitig versuchen, Daten einzufügen. Um diesen Fehler zu beheben, verwenden Sie Ersatzschlüssel, um Identitätsspalten durch deterministische Ersatzschlüssel zu ersetzen, die mit Funktionen wie uuid()
oder monotonically_increasing_id()
erzeugt werden.
CREATE TABLE better_table AS
SELECT
monotonically_increasing_id() AS id, -- Replaces identity column
name, department
FROM source_data;
Du kannst Delta Lakes MERGE
auch für komplexe Einfüge- und Aktualisierungsworkflows nutzen, ohne auf Identitätsspalten angewiesen zu sein.
MERGE INTO target_table AS t
USING source_table AS s
ON t.id = s.id
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *;
Fazit
In Databricks ist der Befehl CREATE TABLE
ein vielseitiges Werkzeug zur Definition von Datenstrukturen, zur Verknüpfung mit externen Daten und zur Ableitung neuer Datensätze durch Abfragen. Es ist wichtig, die verschiedenen Syntaxen für das Erstellen und Verwalten von Tabellen in Databricks zu verstehen, die deinen Bedürfnissen entsprechen. Wie du gesehen hast, gibt es verschiedene Methoden, um Tabellen zu erstellen.
Wenn du die grundlegenden Konzepte von Databricks kennenlernen möchtest, empfehle ich dir den Kurs Einführung in Databricks von DataCamp, um mehr über Databricks als Data Warehousing-Lösung für Business Intelligence (BI) zu erfahren. Ich empfehle auch einen Blick in unseren Blogbeitrag Databricks-Zertifizierungen im Jahr 2025, um zu erfahren, wie du Databricks-Zertifizierungen erlangen kannst, welche Vorteile du für deine Karriere hast und wie du die richtige Zertifizierung für deine Karriereziele auswählst.
Databricks CREATE TABLE FAQs
Was ist der Zweck des Befehls CREATE TABLE in Databricks?
Mit dem Befehl CREATE TABLE
kannst du eine neue Tabelle in Databricks definieren und das Schema, das Datenformat und den Speicherort der Tabelle festlegen.
Was ist der Unterschied zwischen verwalteten und externen Tabellen?
Verwaltete Tabellen speichern sowohl Metadaten als auch Daten in Databricks, während externe Tabellen nur Metadaten speichern und die Daten an einem externen Ort belassen.
Ist eine externe Tabelle dasselbe wie eine nicht verwaltete Tabelle?
Ja, externe Tabellen und nicht verwaltete Tabellen beziehen sich auf dasselbe Konzept in Databricks. Sie speichern die Metadaten in Databricks, die eigentlichen Daten aber an einem externen Ort, so dass du den Lebenszyklus der Daten unabhängig verwalten kannst.
Was ist ein oberflächlicher vs. tiefer Klon?
Ein flacher Klon kopiert nur die Metadaten, während ein tiefer Klon sowohl die Daten als auch die Metadaten dupliziert.
Was sind temporäre Tabellen?
Temporäre Tabellen existieren nur innerhalb der aktuellen Sitzung und werden nach dem Ende der Sitzung automatisch gelöscht.
Was ist die Schemaentwicklung in Databricks?
Mit der Schemaentwicklung kannst du das Schema einer bestehenden Tabelle ändern (z. B. Spalten hinzufügen oder ändern), ohne die gesamte Tabelle neu erstellen zu müssen, was besonders bei Delta-Tabellen von Vorteil ist.
Databricks lernen mit DataCamp
Kurs
Data Management in Databricks
Kurs
Data Visualization in Databricks

Der Blog
Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn
Der Blog
Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Nisha Arya Ahmed
20 Min.
Der Blog
2022-2023 DataCamp Classrooms Jahresbericht
Der Blog
Die 32 besten AWS-Interview-Fragen und Antworten für 2024
Der Blog
Top 30 Generative KI Interview Fragen und Antworten für 2024

Hesam Sheikh Hassani
15 Min.
Der Blog