התבנית Cloud Storage Avro files to Spanner Data Validation (קובצי Avro ב-Cloud Storage לאימות נתונים ב-Spanner) היא צינור נתונים באצווה שקורא נתונים מ-Cloud Storage ומ-Spanner ומשווה אותם כדי לאמת את נכונות ההעברה.
הדרישות לגבי צינורות
- הספרייה ב-Cloud Storage לקובצי Avro צריכה להתקיים לפני הפעלת צינור הנתונים. כדי ליצור את קובצי ה-Avro האלה, מריצים את צינור הנתונים SourceDB to Cloud Spanner עם הפרמטר
gcsOutputDirectory. - מערך הנתונים ב-BigQuery שאליו מיועדים תוצאות האימות צריך להתקיים לפני הפעלת צינור הנתונים.
- הטבלאות ב-Spanner צריכות להתקיים לפני הפעלת צינור הנתונים.
- לכל הטבלאות ב-Spanner צריכה להיות סכימה תואמת (ישירות או באמצעות מיפוי סכימה).
- כדי לאמת את המיגרציה שבוצעה על ידי הצינור SourceDB ל-Cloud Spanner, צריך להעביר ערכים זהים לכל ההגדרות המשותפות (כמו
sessionFilePath,schemaOverridesFilePathו-transformationJarPath).
פרמטרים של תבניות
פרמטרים נדרשים
- gcsInputDirectory: הספרייה הזו משמשת לקריאת קובצי ה-AVRO של הרשומות שנקראו מהמקור. לדוגמה,
gs://your-bucket/your-path. - projectId: השם של פרויקט Cloud Spanner.
- instanceId: מכונת היעד של Cloud Spanner.
- databaseId: מסד הנתונים של Cloud Spanner ביעד.
- bigQueryDataset: מזהה קבוצת הנתונים ב-BigQuery שבה יאוחסנו תוצאות האימות. לדוגמה,
validation_report_dataset.
פרמטרים אופציונליים
- spannerHost: נקודת הקצה של Cloud Spanner שאליה מתקשרים בתבנית. לדוגמה,
https://batch-spanner.googleapis.com. ערך ברירת המחדל הוא: https://batch-spanner.googleapis.com. - spannerPriority: העדיפות של הבקשה לקריאות ל-Cloud Spanner. הערך צריך להיות אחד מהערכים הבאים: [
HIGH,MEDIUM,LOW]. ברירת המחדל היאHIGH. - sessionFilePath: נתיב קובץ הסשן ב-Cloud Storage שמכיל מידע על מיפוי מכלי ההעברה של Spanner. ברירת המחדל היא ריקה.
- schemaOverridesFilePath: קובץ שבו מצוינים השינויים בשם הטבלה ובשם העמודה ממקור ל-Spanner. ברירת המחדל היא ריקה.
- tableOverrides: אלה החלפות של שמות טבלאות מהמקור ל-Spanner. הם נכתבים בפורמט הבא: [{SourceTableName1, SpannerTableName1}, {SourceTableName2, SpannerTableName2}] בדוגמה הזו, הטבלה Singers ממופה ל-Vocalists והטבלה Albums ממופה ל-Records. לדוגמה,
[{Singers, Vocalists}, {Albums, Records}]. ברירת המחדל היא ריקה. - columnOverrides: אלה הם שינויים בשמות העמודות ממקור ל-Spanner. הם נכתבים בפורמט הבא: [{SourceTableName1.SourceColumnName1, SourceTableName1.SpannerColumnName1}, {SourceTableName2.SourceColumnName1, SourceTableName2.SpannerColumnName1}]. שימו לב שהערך של SourceTableName צריך להיות זהה גם במקור וגם בצמד Spanner. כדי לשנות את שמות הטבלאות, משתמשים ב-tableOverrides.בדוגמה מוצג מיפוי של SingerName ל-TalentName ושל AlbumName ל-RecordName בטבלאות Singers ו-Albums בהתאמה. לדוגמה,
[{Singers.SingerName, Singers.TalentName}, {Albums.AlbumName, Albums.RecordName}]. ברירת המחדל היא ריקה. - runId: מזהה ייחודי של הרצת האימות. אם לא תציינו שם, המערכת תשתמש בשם של משימת Dataflow. לדוגמה,
run_20230101_120000. - transformationJarPath: מיקום של קובץ jar בהתאמה אישית ב-Cloud Storage שמכיל את לוגיקת ההמרה בהתאמה אישית לעיבוד רשומות. ברירת המחדל היא ריקה.
- transformationClassName: שם המחלקה שמוגדר במלואו עם לוגיקת ההמרה המותאמת אישית. זהו שדה חובה אם מציינים את transformationJarPath. ברירת המחדל היא ריקה.
- transformationCustomParameters: מחרוזת שמכילה פרמטרים מותאמים אישית שיועברו למחלקת ההמרה המותאמת אישית. ברירת המחדל היא ריקה.
- tables: רשימה מופרדת בפסיקים של טבלאות מקור שרוצים לכלול בהרצת האימות. ברירת המחדל היא ריקה.
- tableConfigurationFilePath: נתיב קובץ ב-GCS שמכיל רשימת JSON של טבלאות מקור לאימות. זה חייב להיות קובץ JSON עם המבנה
{"tableNames": ["table1", "table2"]}. אופציונלי,optionalConfigurations.<sourceTable>.spannerQueryמגדיר את שאילתת Spanner שמשמשת לקריאת הטבלה הזו, למשל כדי להגביל אותה ל-shardIdsשנבחר. מזינים מפתח של טבלה ב-Spanner לפי השם שלה ב-Spanner. כללי השאילתות מפורטים בקטע 'אימות של קבוצת משנה של רסיסים' בקובץ README.md של המודול. ברירת המחדל היא ריקה. - shardIds: רשימה מופרדת בפסיקים של מזהי שברים לוגיים (המזהים שמשמשים את התבנית sourcedb-to-spanner, שמופיעים כספרייה
<table>/<shardId>/בפלט של Avro). אם מגדירים את המאפיין הזה, רק הרסיסים האלה מאומתים. טבלאות עם קובץ סשןShardIdColumnמסוננות לפי העמודה הזו. כל טבלה אחרת בהיקף צריכה להכילspannerQueryב-tableConfigurationFilePath, אחרת העבודה תיכשל. לדוגמה,shard_001,shard_007. ברירת המחדל היא ריקה.
הרצת התבנית
המסוף
- עוברים לדף Create job from template (יצירת משימה מתבנית) ב-Dataflow. כניסה לדף Create job from template
- בשדה שם המשימה, מזינים שם ייחודי למשימה.
- אופציונלי: בתפריט הנפתח Regional endpoint (נקודת קצה אזורית), בוחרים ערך. אזור ברירת המחדל הוא
us-central1.רשימת האזורים שבהם אפשר להריץ משימת Dataflow מופיעה במאמר מיקומי Dataflow.
- בתפריט הנפתח Dataflow template (תבנית Dataflow), בוחרים בתבנית Cloud Storage Avro files to Spanner Data Validation (קובצי Cloud Storage Avro לאימות נתונים ב-Spanner).
- בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
- לוחצים על הפעלת העבודה.
CLI של gcloud
במעטפת או בטרמינל, מריצים את התבנית:
gcloud dataflow flex-template run JOB_NAME \ --template-file-gcs-location=gs://dataflow-templates/VERSION/flex/Avro_to_Spanner_Data_Validator \ --region=REGION_NAME \ --parameters \ gcsInputDirectory=PATH_TO_AVRO_FILES,\ projectId=PROJECT_ID,\ instanceId=INSTANCE_ID,\ databaseId=DATABASE_ID,\ bigQueryDataset=BIGQUERY_DATASET
מחליפים את מה שכתוב בשדות הבאים:
-
JOB_NAME: שם ייחודי של המשימה לפי בחירתכם -
VERSION: הגרסה של התבנית שרוצים להשתמש בהאפשר להשתמש בערכים הבאים:
latestכדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית ההורה ללא תאריך בדלי – gs://dataflow-templates/latest/- שם הגרסה, כמו
2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית, שאפשר למצוא מקוננת בתיקיית נתונים מתאריך ספציפי המתאימה בדלי – gs://dataflow-templates/
-
REGION_NAME: האזור שבו רוצים לפרוס את משימת Dataflow, לדוגמה:us-central1 -
PATH_TO_AVRO_FILES: הנתיב ב-Cloud Storage לקובצי Avro. -
PROJECT_ID: מזהה הפרויקט ב-Spanner. -
INSTANCE_ID: מזהה מכונת היעד של Spanner. -
DATABASE_ID: מזהה מסד הנתונים של Spanner ביעד. -
BIGQUERY_DATASET: מזהה מערך הנתונים ב-BigQuery של תוצאות האימות.
API
כדי להריץ את התבנית באמצעות API בארכיטקטורת REST, שולחים בקשת HTTP POST. מידע נוסף על ממשק ה-API ועל היקפי ההרשאות שלו זמין במאמר projects.templates.launch.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "launchParameter": { "jobName": "JOB_NAME", "parameters": { "gcsInputDirectory": "PATH_TO_AVRO_FILES", "projectId": "PROJECT_ID", "instanceId": "INSTANCE_ID", "databaseId": "DATABASE_ID", "bigQueryDataset": "BIGQUERY_DATASET" }, "containerSpecGcsPath": "gs://dataflow-templates/VERSION/flex/Avro_to_Spanner_Data_Validator" } }
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה Google Cloud הפרויקט שבו רוצים להריץ את משימת Dataflow -
JOB_NAME: שם ייחודי של המשימה לפי בחירתכם -
VERSION: הגרסה של התבנית שרוצים להשתמש בהאפשר להשתמש בערכים הבאים:
latestכדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית ההורה ללא תאריך בדלי – gs://dataflow-templates/latest/- שם הגרסה, כמו
2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית, שאפשר למצוא מקוננת בתיקיית נתונים מתאריך ספציפי המתאימה בדלי – gs://dataflow-templates/
-
LOCATION: האזור שבו רוצים לפרוס את משימת Dataflow, לדוגמה:us-central1 -
PATH_TO_AVRO_FILES: הנתיב ב-Cloud Storage לקובצי Avro. -
PROJECT_ID: מזהה הפרויקט ב-Spanner. -
INSTANCE_ID: מזהה מכונת היעד של Spanner. -
DATABASE_ID: מזהה מסד הנתונים של Spanner ביעד. -
BIGQUERY_DATASET: מזהה מערך הנתונים ב-BigQuery של תוצאות האימות.