הרכיב האופציונלי Delta Lake מאפשר להריץ עומסי עבודה של Delta Lake באשכול של Managed Service for Apache Spark. כשהרכיב מופעל, הוא מתקין את הספריות הנדרשות ומגדיר את Spark ו-Hive לעבודה עם Delta Lake.
Delta Lake 4.x, שנכלל בגרסת התמונה 3.0 של Managed Service for Apache Spark, לא תומך ב-Hive. למידע נוסף על רכיבים אופציונליים אחרים שזמינים ב-Managed Service for Apache Spark, ראו רכיבים אופציונליים זמינים.
גרסאות תואמות של Managed Service for Apache Spark
אפשר להתקין את רכיב Delta Lake באשכולות של Managed Service for Apache Spark שנוצרו באמצעות גרסת אימג' 2.2.46 של Managed Service for Apache Spark וגרסאות אימג' מאוחרות יותר.
במאמר גרסאות נתמכות של Managed Service for Apache Spark מפורטת גרסת הרכיב של Delta Lake שכלולה בגרסאות של קובצי האימג' של Managed Service for Apache Spark.
מאפיינים שקשורים ל-Delta Lake
כשיוצרים אשכול Managed Service for Apache Spark עם רכיב Delta Lake מופעל, מאפייני Spark הבאים מוגדרים לעבוד עם Delta Lake.
| קובץ תצורה | מאפיין (property) | ערך ברירת המחדל |
|---|---|---|
/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 |
התקנת הרכיב
מתקינים את הרכיב כשיוצרים אשכול של Managed Service for Apache Spark באמצעות מסוף Google Cloud , Google Cloud CLI או Dataproc API.
מסוףGoogle Cloud
- במסוף Google Cloud , פותחים את הדף Create cluster.
- לוחצים על הגדרות נוספות כדי להרחיב את הקטע.
- עורכים את Optional components.
- בחלונית שנפתחת, מסמנים את התיבה דלתא.
- לוחצים על Save.
CLI של gcloud
כדי ליצור אשכול Managed Service for Apache Spark שכולל את רכיב Delta Lake, משתמשים בפקודה gcloud dataproc clusters create עם הדגל --optional-components.
gcloud dataproc clusters create CLUSTER_NAME \ --optional-components=DELTA \ --region=REGION \ ... other flags
הערות:
- CLUSTER_NAME: מציינים את שם האשכול.
- REGION: מציינים את האזור ב-Compute Engine שבו האשכול ימוקם.
API בארכיטקטורת REST
אפשר לציין את רכיב Delta Lake דרך Dataproc API באמצעות SoftwareConfig.Component כחלק מבקשת clusters.create.
דוגמאות לשימוש
בקטע הזה מפורטות דוגמאות לקריאה ולכתיבה של נתונים באמצעות טבלאות Delta Lake.
טבלת Delta Lake
כתיבה לטבלת Delta Lake
אפשר להשתמש ב-Spark DataFrame כדי לכתוב נתונים בטבלת Delta Lake. בדוגמאות הבאות נוצר DataFrame עם נתונים לדוגמה, נוצרת טבלת Delta Lake ב-my_delta_table ב-Cloud Storage, ואז הנתונים נכתבים בטבלת 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");
קריאה מטבלה של Delta Lake
בדוגמאות הבאות, המערכת קוראת את my_delta_table ומציגה את התוכן שלו.
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 עם Delta Lake
כתיבה לטבלת Delta ב-Hive.
הרכיב האופציונלי Managed Service for Apache Spark Delta Lake מוגדר מראש לעבודה עם טבלאות חיצוניות של Hive.
מידע נוסף זמין במאמר מחבר Hive.
מריצים את הדוגמאות בלקוח beeline.
beeline -u jdbc:hive2://יוצרים טבלת Spark Delta Lake.
כדי שטבלת Hive חיצונית תוכל להפנות לטבלת Delta Lake, צריך ליצור את טבלת Delta Lake באמצעות Spark.
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");
יוצרים טבלה חיצונית של 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';
הערות:
- המחלקה
io.delta.hive.DeltaStorageHandlerמטמיעה את ממשקי ה-API של מקור הנתונים של Hive. הוא יכול לטעון טבלת Delta ולחלץ את המטא-נתונים שלה. אם סכימת הטבלה בהצהרהCREATE TABLEלא תואמת למטא-נתונים הבסיסיים של Delta Lake, תופיע הודעת שגיאה.
קריאה מטבלה של Delta Lake ב-Hive.
כדי לקרוא נתונים מטבלת Delta, משתמשים בהצהרת SELECT:
SELECT * FROM deltaTable;
מחיקת טבלה של Delta Lake.
כדי להסיר טבלת Delta, משתמשים בהצהרה DROP TABLE:
DROP TABLE deltaTable;