Installer le composant Delta Lake sur un cluster

Le composant facultatif Delta Lake vous permet d'exécuter des charges de travail Delta Lake sur un cluster Managed Service pour Apache Spark. Lorsqu'il est activé, le composant installe les bibliothèques nécessaires et configure Spark et Hive pour qu'ils fonctionnent avec Delta Lake.

Delta Lake 4.x, qui est inclus dans la version d'image 3.0 de Managed Service pour Apache Spark, n'est pas compatible avec Hive. Pour en savoir plus sur les autres composants facultatifs disponibles dans Managed Service pour Apache Spark, consultez Composants facultatifs disponibles.

Versions d'image Managed Service pour Apache Spark compatibles

Vous pouvez installer le composant Delta Lake sur les clusters Managed Service pour Apache Spark créés avec la version d'image Managed Service pour Apache Spark 2.2.46 et les versions d'image ultérieures.

Consultez Versions de Managed Service pour Apache Spark compatibles pour connaître la version du composant Delta Lake incluse dans les versions d'image Managed Service pour Apache Spark.

Lorsque vous créez un cluster Managed Service pour Apache Spark avec le composant Delta Lake activé, les propriétés Spark suivantes sont configurées pour fonctionner avec Delta Lake.

Fichier de configuration Propriété Valeur par défaut
/etc/spark/conf/spark-defaults.conf spark.sql.extensions io.delta.sql.DeltaSparkSessionExtension
/etc/spark/conf/spark-defaults.conf spark.sql.catalog.spark_catalog org.apache.spark.sql.delta.catalog.DeltaCatalog

Installer le composant

Installez le composant lorsque vous créez un cluster Managed Service pour Apache Spark à l'aide de la console Google Cloud , de la Google Cloud CLI ou de l'API Dataproc.

ConsoleGoogle Cloud

  1. Dans la console Google Cloud , ouvrez la page Créer un cluster.
  2. Cliquez sur Configuration supplémentaire pour développer cette section.
  3. Modifiez les composants facultatifs.
  4. Dans le panneau qui s'ouvre, cochez la case Delta.
  5. Cliquez sur Enregistrer.

gcloud CLI

Pour créer un cluster Managed Service pour Apache Spark incluant le composant Delta Lake, utilisez la commande gcloud dataproc clusters create avec l'option --optional-components.

gcloud dataproc clusters create CLUSTER_NAME \
    --optional-components=DELTA \
    --region=REGION \
    ... other flags

Remarques :

  • CLUSTER_NAME : spécifiez le nom du cluster.
  • REGION : spécifiez une région Compute Engine où se trouvera le cluster.

API REST

Le composant Delta Lake peut être spécifié via l'API Dataproc à l'aide de SoftwareConfig.Component dans le cadre d'une requête clusters.create.

Exemples d'utilisation

Cette section fournit des exemples de lecture et d'écriture de données à l'aide de tables Delta Lake.

Table Delta Lake

Écrire dans une table Delta Lake

Vous pouvez utiliser le DataFrame Spark pour écrire des données dans une table Delta Lake. Les exemples suivants créent un DataFrame avec des exemples de données, créent une table Delta Lake my_delta_table dans Cloud Storage, puis écrivent les données dans la table Delta Lake.

PySpark

# Create a DataFrame with sample data.
data = spark.createDataFrame([(1, "Alice"), (2, "Bob")], ["id", "name"])

# Create a Delta Lake table in Cloud Storage.
spark.sql("""CREATE TABLE IF NOT EXISTS my_delta_table (
    id long,
    name string)
USING delta
LOCATION 'gs://delta-gcs-demo/example-prefix/default/my_delta_table'""")

# Write the DataFrame to the Delta Lake table in Cloud Storage.
data.writeTo("my_delta_table").append()

Scala

// Create a DataFrame with sample data.
val data = Seq((1, "Alice"), (2, "Bob")).toDF("id", "name")

// Create a Delta Lake table in Cloud Storage.
spark.sql("""CREATE TABLE IF NOT EXISTS my_delta_table (
    id integer,
    name string)
USING delta
LOCATION 'gs://delta-gcs-demo/example-prefix/default/my_delta_table'""")

// Write the DataFrame to the Delta Lake table in Cloud Storage.
data.write.format("delta").mode("append").saveAsTable("my_delta_table")

Spark SQL

CREATE TABLE IF NOT EXISTS my_delta_table (
    id integer,
    name string)
USING delta
LOCATION 'gs://delta-gcs-demo/example-prefix/default/my_delta_table';

INSERT INTO my_delta_table VALUES ("1", "Alice"), ("2", "Bob");

Lire à partir d'une table Delta Lake

Les exemples suivants lisent le fichier my_delta_table et affichent son contenu.

PySpark

# Read the Delta Lake table into a DataFrame.
df = spark.table("my_delta_table")

# Display the data.
df.show()

Scala

// Read the Delta Lake table into a DataFrame.
val df = spark.table("my_delta_table")

// Display the data.
df.show()

Spark SQL

SELECT * FROM my_delta_table;

Hive avec Delta Lake

Écrire dans une table Delta dans Hive.

Le composant facultatif Managed Service pour Apache Spark Delta Lake est préconfiguré pour fonctionner avec les tables externes Hive.

Pour en savoir plus, consultez Connecteur Hive.

Exécutez les exemples dans un client Beeline.

beeline -u jdbc:hive2://

Créer une table Spark Delta Lake

La table Delta Lake doit être créée à l'aide de Spark avant qu'une table externe Hive puisse la référencer.

CREATE TABLE IF NOT EXISTS my_delta_table (
    id integer,
    name string)
USING delta
LOCATION 'gs://delta-gcs-demo/example-prefix/default/my_delta_table';

INSERT INTO my_delta_table VALUES ("1", "Alice"), ("2", "Bob");

Créez une table externe Hive.

SET hive.input.format=io.delta.hive.HiveInputFormat;
SET hive.tez.input.format=io.delta.hive.HiveInputFormat;

CREATE EXTERNAL TABLE deltaTable(id INT, name STRING)
STORED BY 'io.delta.hive.DeltaStorageHandler'
LOCATION 'gs://delta-gcs-demo/example-prefix/default/my_delta_table';

Remarques :

  • La classe io.delta.hive.DeltaStorageHandler implémente les API de source de données Hive. Il peut charger une table Delta et extraire ses métadonnées. Si le schéma de table de l'instruction CREATE TABLE n'est pas cohérent avec les métadonnées Delta Lake sous-jacentes, une erreur est générée.

Lire à partir d'une table Delta Lake dans Hive.

Pour lire les données d'une table Delta, utilisez une instruction SELECT :

SELECT * FROM deltaTable;

Supprimer une table Delta Lake.

Pour supprimer une table Delta, utilisez l'instruction DROP TABLE :

DROP TABLE deltaTable;