תזמון משימות מותאמות אישית של Spark ו-Spark SQL

‫Dataplex Universal Catalog תומך בתזמון של הפעלת קוד בהתאמה אישית, כהפעלה חד-פעמית, לפי לוח זמנים קבוע או לפי דרישה. התכונה 'על פי דרישה' נמצאת בגרסת טרום-השקה וזמינה רק דרך API. אפשר לתזמן טרנספורמציות של נתוני לקוחות באמצעות Spark ‏ (Java),‏ PySpark (מוגבל ל-Spark גרסה 3.2) או Spark SQL. ‫Dataplex Universal Catalog מריץ את הקוד באמצעות עיבוד Spark ללא שרת ותזמון מובנה ללא שרת.

הסברים על המונחים

משימה
משימה ב-Dataplex Universal Catalog מייצגת את העבודה שאתם רוצים ש-Dataplex Universal Catalog יבצע לפי לוח זמנים. הוא כולל את הקוד, את הפרמטרים ואת לוח הזמנים.
משימה

משימה מייצגת הרצה יחידה של משימה ב-Dataplex Universal Catalog. לדוגמה, אם משימה מתוזמנת להפעלה יומית, Dataplex Universal Catalog ייצור משימה בכל יום.

בעבודות שנוצרו החל מ-10 במאי 2023, בשדה Trigger מוצג סוג הטריגר להפעלת העבודה.

אלה סוגי הטריגרים להפעלת משימות:

  • RUN_REQUEST: מציין שהעבודה בוצעה כתוצאה מקריאה ל-RunTask API.

  • TASK_CONFIG: מציין שהמשימה בוצעה בגלל ההגדרה של המשימה TriggerSpec.

מצבי תזמון

Dataplex Universal Catalog תומך במצבי התזמון הבאים:

הפעלה חד-פעמית
אפשר להשתמש במצב הזה כדי להריץ את המשימה רק פעם אחת. אתם יכולים להפעיל אותו באופן מיידי או לתזמן אותו למועד מסוים בעתיד. אם מריצים את המשימה באופן מיידי, יכול להיות שיחלפו עד שתי דקות עד שהביצוע יתחיל.
הפעלה לפי לוח זמנים
משתמשים במצב הזה כדי להריץ את המשימה בתדירות חוזרת. החזרות הנתמכות הן יומיות, שבועיות, חודשיות או מותאמות אישית.
הפעלה על פי דרישה

משתמשים במצב הזה כדי להריץ משימה שנוצרה בעבר לפי דרישה. מצב ההפעלה לפי דרישה נתמך רק על ידי RunTask API. כשמריצים את העבודה לפי דרישה, Dataplex Universal Catalog משתמש בפרמטרים קיימים כדי ליצור עבודה. אתם יכולים לציין את הארגומנטים של ExecutionSpec ואת התוויות להרצת העבודה.

לפני שמתחילים

  1. מפעילים את Dataproc API.

    הפעלת Dataproc API

  2. מפעילים גישה פרטית ל-Google לרשת ולתת-רשת. מפעילים את גישה פרטית ל-Google ברשת שבה משתמשים במשימות של Dataplex Universal Catalog. אם לא מציינים רשת או רשת משנה כשיוצרים את המשימה Dataplex Universal Catalog, המערכת משתמשת ברשת המשנה שמוגדרת כברירת מחדל, ואתם צריכים להפעיל את גישה פרטית ל-Google לרשת המשנה שמוגדרת כברירת מחדל.

  3. יוצרים חשבון שירות. כדי לתזמן משימות ב-Dataplex Universal Catalog, צריך חשבון שירות. חשבון השירות צריך להיות שייך לפרויקט שבו מריצים את המשימות. לחשבון השירות צריכות להיות ההרשאות הבאות:

    • גישה לנתונים ב-BigQuery וב-Cloud Storage שעוברים עיבוד.

    • ההרשאה Dataproc Worker Role בפרויקט שבו מריצים את המשימה.

    • אם המשימה צריכה לקרוא או לעדכן את מופע Dataproc Metastore שמצורף לאגם, לחשבון השירות צריך להיות התפקיד Dataproc Metastore Viewer או Editor. צריך לתת את התפקיד הזה בפרויקט שבו מוגדר אגם Dataplex Universal Catalog.

    • אם המשימה היא משימת Spark SQL, צריך להעניק לחשבון השירות את התפקיד Dataplex Universal Catalog Developer. צריך להעניק את התפקיד הזה בפרויקט שבו מוגדר אגם Dataplex Universal Catalog.

    • אם המשימה היא עבודת Spark SQL, צריך הרשאות אדמין ב-Cloud Storage בקטגוריה שבה התוצאות נכתבות.

    • כדי לתזמן ולהריץ משימות Spark SQL ומשימות Spark בהתאמה אישית, צריך לקבל את תפקידי ה-IAM הבאים בחשבון השירות: Dataplex Universal Catalog Metadata Reader ‏ (roles/dataplex.metadataReader),‏ Dataplex Universal Catalog Viewer ‏ (roles/dataplex.viewer) ו-Dataproc Metastore Metadata User ‏ (roles/metastore.metadataUser).

  4. מקצים למשתמש ששולח את העבודה את התפקיד 'משתמש בחשבון שירות' (roles/iam.serviceAccountUser) בחשבון השירות. הוראות מפורטות זמינות במאמר ניהול הגישה לחשבונות שירות.

  5. נותנים לחשבון השירות של אגם הנתונים ב-Dataplex Universal Catalog הרשאות להשתמש בחשבון השירות. אפשר למצוא את חשבון השירות של אגם Dataplex Universal Catalog בדף Lake Details במסוףGoogle Cloud .

  6. אם הפרויקט שמכיל את אגם Dataplex Universal Catalog שונה מהפרויקט שבו המשימה אמורה להתבצע, צריך להעניק לחשבון השירות של אגם Dataplex Universal Catalog את תפקיד העריכה של Dataproc בפרויקט שבו מבצעים את המשימה.

  7. ממקמים את ארטיפקטי הקוד הנדרשים (קבצי JAR,‏ Python או סקריפט SQL) או קבצים בארכיון (.jar,‏ .tar,‏ .tar.gz,‏ .tgz,‏ .zip) בנתיב ב-Cloud Storage.

  8. חשוב לוודא שלחשבון השירות יש את storage.objects.getההרשאה הנדרשת לדלי Cloud Storage שבו מאוחסנים ארטיפקטים של הקוד.

תזמון משימת Spark‏ (Java או Python)

המסוף

  1. במסוף Google Cloud , נכנסים לדף Process בקטלוג האוניברסלי של Dataplex.

    מעבר אל 'תהליך'

  2. לוחצים על יצירת משימה.

  3. בקטע יצירת משימת Spark בהתאמה אישית, לוחצים על יצירת משימה.

  4. בוחרים אגם Dataplex Universal Catalog.

  5. מזינים שם למשימה.

  6. יוצרים מזהה למשימה.

  7. בקטע Task configuration (הגדרת המשימה), בוחרים באפשרות Spark או PySpark בשדה Type (סוג).

  8. מזינים את הארגומנטים הרלוונטיים.

  9. בשדה Service account, מזינים חשבון שירות של משתמש שהמשימה המותאמת אישית של Spark יכולה לפעול איתו.

  10. לוחצים על Continue.

  11. אופציונלי: הגדרת תזמון: בוחרים באפשרות הפעלה חד-פעמית או חזרה. ממלאים את שדות החובה.

  12. לוחצים על Continue.

  13. אופציונלי: התאמה אישית של משאבים והוספת הגדרות נוספות.

  14. לוחצים על יצירה.

gcloud

אפשר לתזמן משימת Spark ‏ (Java / Python) באמצעות פקודת ה-CLI של gcloud. בטבלה הבאה מפורטים הפרמטרים שחובה להשתמש בהם והפרמטרים האופציונליים:

פרמטר תיאור
--lake מזהה האגם של משאב האגם בשירות Dataplex Universal Catalog.
--location המיקום של שירות Dataplex Universal Catalog.
--spark-main-class הסיווג העיקרי של הנהג. קובץ ה-jar שמכיל את הכיתה צריך להיות ב-CLASSPATH שמוגדר כברירת מחדל.
--spark-main-jar-file-uri ה-URI של Cloud Storage של הקובץ jar שמכיל את המחלקה הראשית.
--spark-archive-uris אופציונלי: כתובות URI של Cloud Storage של ארכיונים לחילוץ לספריית העבודה של כל רכיב Executor. סוגי הקבצים הנתמכים: .jar,‏ .tar,‏ .tar.gz, .tgz ו-.zip.
--spark-file-uris אופציונלי: כתובות URI של Cloud Storage של קבצים שיוצבו בספריית העבודה של כל רכיב Executor.
--batch-executors-count אופציונלי: המספר הכולל של מריצי המשימות. ערך ברירת המחדל הוא 2.
--batch-max-executors-count אופציונלי: המספר המקסימלי של רכיבי Executor שניתנים להגדרה. ערך ברירת המחדל הוא 1,000. אם batch-max-executors-count גדול מ-batch-executors-count, ‏ Dataplex Universal Catalog מפעיל שינוי גודל אוטומטי.
--container-image-java-jars אופציונלי: רשימה של קובצי JAR של Java להוספה לנתיב המחלקה. קלט תקין כולל מזהי URI של Cloud Storage לקובצי Jar בינאריים.
לדוגמה, gs://bucket-name/my/path/to/file.jar.
--container-image-properties אופציונלי: מפתחות מאפיינים, שצוינו בפורמט prefix:property.
לדוגמה, core:hadoop.tmp.dir.
מידע נוסף זמין במאמר מאפייני אשכול.
--vpc-network-tags אופציונלי: רשימה של תגי רשת להחלה על המשרה.
--vpc-network-name אופציונלי: רשת הענן הווירטואלי הפרטי (VPC) שבה מופעלת העבודה. כברירת מחדל, Dataplex Universal Catalog משתמש ברשת ה-VPC שנקראת Default בפרויקט.
חובה להשתמש רק באחד מהמאפיינים --vpc-network-name או --vpc-sub-network-name.
--vpc-sub-network-name אופציונלי: רשת המשנה של ה-VPC שבה הרצתם את העבודה.
חובה להשתמש רק באחד מהמאפיינים --vpc-sub-network-name או --vpc-network-name.
--trigger-type סוג הטריגר של המשימה שהמשתמש ציין. הערכים האפשריים הם:
ON_DEMAND – המשימה מופעלת פעם אחת זמן קצר אחרי יצירת המשימה.
RECURRING – המשימה מופעלת מעת לעת לפי לוח זמנים.
--trigger-start-time אופציונלי: השעה של ההרצה הראשונה של המשימה. הפורמט הוא ‎ `{year}-{month}-{day}T{hour}:{min}:{sec}Z`‎, כאשר אזור הזמן הוא UTC. לדוגמה, המחרוזת '2017-01-15T01:30:00Z' מייצגת את השעה 01:30 UTC ב-15 בינואר 2017. אם לא מציינים את הערך הזה, המשימה תופעל אחרי השליחה אם סוג הטריגר הוא ON_DEMAND, או במועד שצוין אם סוג הטריגר הוא RECURRING.
--trigger-disabled אופציונלי: מונע את ההפעלה של המשימה. הפרמטר הזה לא מבטל את המשימות שכבר פועלות, אלא משבית זמנית את המשימות RECURRING.
--trigger-max-retires אופציונלי: מספר הניסיונות החוזרים לפני ביטול הפעולה. מגדירים את הערך לאפס כדי שלא תהיה אפשרות לנסות שוב לבצע משימה שנכשלה.
--trigger-schedule לוח זמנים של Cron להרצת משימות באופן תקופתי.
--description אופציונלי: תיאור המשימה.
--display-name אופציונלי: השם המוצג של המשימה.
--labels אופציונלי: רשימה של זוגות של תוויות KEY=VALUE להוספה.
--execution-args אופציונלי: הארגומנטים להעברה למשימה. הארגומנטים יכולים להיות שילוב של צמדי מפתח/ערך. אפשר להעביר רשימה מופרדת בפסיקים של צמדי מפתח/ערך כארגומנטים של ההפעלה. כדי להעביר ארגומנטים תלויי מיקום, מגדירים את המפתח כ-TASK_ARGS, ואת הערך כמחרוזת מופרדת בפסיקים של כל הארגומנטים תלויי המיקום. כדי להשתמש במפריד שאינו פסיק, אפשר לעיין במאמר בנושא שימוש בתו בריחה.
אם מעבירים את key-value וארגומנטים תלויי מיקום ביחד, אז TASK_ARGS יועבר כארגומנט האחרון.
--execution-service-account חשבון השירות שבו רוצים להשתמש כדי להפעיל משימה.
--max-job-execution-lifetime אופציונלי: משך הזמן המקסימלי לפני שפג תוקף הביצוע של העבודה.
--container-image אופציונלי: קובץ אימג' של קונטיינר מותאם אישית לסביבת זמן הריצה של העבודה. אם לא צוין, ייעשה שימוש בקובץ אימג' של קונטיינר ברירת מחדל.
--kms-key אופציונלי: מפתח Cloud KMS לשימוש בהצפנה, בפורמט:
projects/{project_number}/locations/{location_id}/keyRings/{key-ring-name}/cryptoKeys/{key-name}

דוגמה ל-Java:

glcoud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --trigger-type=ON_DEMAND spark-main-jar-file-uri=<gcs location to java file> --execution-service-account=<service-account-email> --trigger-start-time=<timestamp after which job starts ex. 2099-01-01T00:00:00Z> --labels=key1=value1,key2=value3,key3=value3 --execution-args=arg1=value1,arg2=value3,arg3=value3 <task-id>

דוגמה ל-PySpark:

gcloud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --trigger-type=RECURRING --trigger-schedule=<Cron schedule https://en.wikipedia.org/wiki/Cron> --spark-python-script-file=<gcs location to python script> --execution-service-account=<service-account-email> --execution-args=^::^arg1=value1::arg2=value2::TASK_ARGS="pos-arg1, pos-arg2" <task-id>

REST

כדי ליצור משימה, משתמשים ב-APIs Explorer.

תזמון משימת Spark SQL

gcloud

כדי לתזמן משימת Spark SQL, מריצים את אותה פקודה ב-CLI של gcloud כמו במאמר תזמון משימת Spark (Java או Python), עם הפרמטרים הנוספים הבאים:

פרמטר תיאור
--spark-sql-script הטקסט של שאילתת ה-SQL. צריך להגדיר את spark-sql-script או את spark-sql-script-file.
--spark-sql-script-file הפניה לקובץ שאילתה. הערך הזה יכול להיות ה-URI של קובץ השאילתה ב-Cloud Storage או הנתיב לתוכן של סקריפט ה-SQL. צריך להגדיר את spark-sql-script או את spark-sql-script-file.
--execution-args במשימות של Spark SQL, הארגומנטים הבאים הם חובה וצריך להעביר אותם כארגומנטים תלויי מיקום:
--output_location, <GCS uri of the output directory>
--output_format, <output file format>.‫
הפורמטים הנתמכים הם קובץ CSV, קובץ JSON,‏ parquet ו-orc.
gcloud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --execution-service-account=<service-account-email> --trigger-type=ON_DEMAND --spark-sql-script=<sql-script> --execution-args=^::^TASK_ARGS="--output_location, <gcs folder location>, --output_format, json" <sql-task-id>

REST

כדי ליצור משימה, משתמשים ב-APIs Explorer.

מעקב אחרי המשימה

המסוף

  1. במסוף Google Cloud , נכנסים לדף Process בקטלוג האוניברסלי של Dataplex.

    מעבר אל 'תהליך'

  2. בכרטיסייה משימות מופיעה רשימת משימות, מסוננת לפי סוגים של תבניות משימות.

  3. בעמודה Name (שם), לוחצים על המשימה שרוצים לראות.

  4. לוחצים על מזהה המשימה של המשימה שרוצים לראות.

    הדף Dataproc ייפתח במסוףGoogle Cloud , שבו אפשר לראות את פרטי המעקב והפלט.

gcloud

בטבלה הבאה מפורטות פקודות ה-CLI של gcloud למעקב אחר המשימות.

פעולה פקודה ב-CLI של gcloud
הצגת רשימת המשימות gcloud dataplex tasks list --project=<project-name> --location=<location> --lake=<lake-id>
צפייה בפרטי המשימה gcloud dataplex tasks describe --project=<project-name> --location=<location> --lake=<lake-id> <task-id>
הצגת המשרות של משימה gcloud dataplex tasks jobs list --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id>
צפייה בפרטי המשרה gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>

‫Dataplex Universal Catalog מריץ משימות ב-Serverless for Apache Spark (Batches). כדי לראות את יומני ההפעלה של משימה ב-Dataplex Universal Catalog:

  1. מקבלים את מזהה המשימה של Dataproc Serverless (Batches). מריצים את הפקודה הבאה:

    gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>
    
  2. מעיינים ביומנים. מריצים את הפקודה הבאה, באמצעות מזהה המשימה שקיבלתם מהרצת הפקודה הקודמת:

    gcloud beta dataproc batches wait --project=<project-name> --region=<location> <job-id>
    

REST

כדי get או list משימה או עבודה, משתמשים ב-APIs Explorer.

ניהול לוח הזמנים

במסוף Google Cloud , בתוך Dataplex Universal Catalog, אפשר לערוך את לוח הזמנים של משימה, למחוק משימה או לבטל עבודה שמתבצעת. בטבלה הבאה מפורטות הפקודות ב-CLI של gcloud לביצוע הפעולות האלה.

פעולה פקודה ב-CLI של gcloud
עריכת לוח הזמנים של המשימה gcloud dataplex tasks update --project=<project-name> --location=<location> --lake=<lake-id> --trigger-schedule=<updated-schedule> <task-id>
איך מוחקים משימות gcloud dataplex tasks delete --project=<project-name> --location=<location> --lake=<lake-id> <task-id>
ביטול משימה gcloud dataplex tasks jobs cancel --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>

המאמרים הבאים