העברת סכימה ונתונים מ-Teradata
השילוב של שירות העברת הנתונים ל-BigQuery עם סוכן מיגרציה מיוחד מאפשר להעתיק נתונים ממופע של מחסן נתונים (data warehouse) מקומי של Teradata ל-BigQuery. במאמר הזה מתואר תהליך העברת הנתונים מ-Teradata באמצעות שירות העברת הנתונים ל-BigQuery.
לפני שמתחילים
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
Enable the BigQuery, BigQuery Data Transfer Service, Cloud Storage, and Pub/Sub APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Create a service account:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles. -
In the Cloud de Confiance console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Cloud de Confiance console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart. - Click Create and continue.
-
Grant the following roles to the service account: roles/bigquery.user, roles/storage.objectAdmin, roles/iam.serviceAccountTokenCreator.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click Add another role and add each additional role.
- Click Continue.
-
Click Done to finish creating the service account.
Do not close your browser window. You will use it in the next step.
-
Ensure that you have the Create Service Accounts IAM role
(
-
Create a service account key:
- In the Cloud de Confiance console, click the email address for the service account that you created.
- Click Keys.
- Click Add key, and then click Create new key.
- Click Create. A JSON key file is downloaded to your computer.
- Click Close.
הגדרת ההרשאות הנדרשות
מוודאים שלחשבון המשתמש שיוצר את ההעברה יש את התפקידים הבאים בפרויקט שמכיל את משימת ההעברה:
- כלי לצפייה ביומנים (
roles/logging.viewer) - התפקיד Storage Admin (
roles/storage.admin) או תפקיד בהתאמה אישית שכולל את ההרשאות הבאות:storage.objects.createstorage.objects.getstorage.objects.list
- תפקיד אדמין ב-BigQuery (
roles/bigquery.admin) או תפקיד מותאם אישית שמעניק את ההרשאות הבאות:bigquery.datasets.createbigquery.jobs.createbigquery.jobs.getbigquery.jobs.listAllbigquery.tables.getbigquery.transfers.getbigquery.transfers.update
יצירת מערך נתונים
יוצרים מערך נתונים ב-BigQuery לאחסון הנתונים. אין צורך ליצור טבלאות.
יצירת קטגוריה של Cloud Storage
יוצרים קטגוריה של Cloud Storage לאחסון זמני של הנתונים במהלך העברת העבודה.
הכנת הסביבה המקומית
כדי להכין את הסביבה המקומית לעבודת ההעברה, צריך להשלים את המשימות שמפורטות בקטע הזה.
דרישות לגבי המחשב המקומי
- סוכן ההעברה משתמש בחיבור JDBC עם מופע Teradata ועם ממשקי API. Cloud de Confiance by S3NS מוודאים שחומת אש לא חוסמת את הגישה לרשת.
- מוודאים שמותקנת סביבת זמן ריצה של Java 8 ואילך.
- חשוב לוודא שיש לכם מספיק נפח אחסון לשיטת החילוץ שבחרתם, כפי שמתואר בקטע שיטת החילוץ.
- אם החלטתם להשתמש בחילוץ Teradata Parallel Transporter (TPT), ודאו שכלי השירות
tbuildמותקן. מידע נוסף על בחירת שיטת חילוץ זמין במאמר שיטת חילוץ.
פרטי הקישור ל-Teradata
מוודאים שיש לכם את שם המשתמש והסיסמה של משתמש Teradata עם גישת קריאה לטבלאות המערכת ולטבלאות שמועברות.
חשוב לוודא שאתם יודעים את שם המארח ואת מספר היציאה כדי להתחבר למופע Teradata.
הורדת מנהל ההתקן JDBC
מורידים
את קובץ מנהל ההתקן של JDBC terajdbc4.jar מ-Teradata למחשב שאפשר
להתחבר למחסן הנתונים.
הגדרת המשתנה GOOGLE_APPLICATION_CREDENTIALS
מגדירים את משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS למפתח של חשבון השירות שהורדתם בקטע לפני שמתחילים.
עדכון כלל היציאה ב-VPC Service Controls
מוסיפים את הפרויקט המנוהל של שירות העברת הנתונים ל-BigQuery שמתאים לאזור שלכם לכלל התעבורה היוצאת בהיקף של VPC Service Controls. Cloud de Confiance by S3NS
בטבלה הבאה מופיעה רשימה של מספרי פרויקטים למיקומים אזוריים שמשמשים להעברות נתונים. מוסיפים את מספרי הפרויקטים שמתאימים למיקום של מערך הנתונים.
מיקומים במספר אזורים
| תיאור של המיקום 'במספר אזורים' | השם של המיקום 'במספר אזורים' | מספרי פרויקטים |
|---|---|---|
| מרכזי נתונים במדינות החברות באיחוד האירופי | eu |
17253722542 272853474138 420718595790 929473878322 990232121269 |
| מרכזי נתונים בארצות הברית | us |
1005756709729 140222280645 247872939591 312976397333 521896999118 525821192359 892499355189 949134172629 990232121269 |
מיקומים אזוריים
| תיאור האזור | שם האזור | מספרי פרויקטים |
|---|---|---|
| אמריקה | ||
| מונטריאול | northamerica-northeast1 |
603911341430 644379120249 665941355665 743643531530 990232121269 |
| טורונטו | northamerica-northeast2 |
181203883014 569023246094 814935732186 833015518790 990232121269 |
| מקסיקו | northamerica-south1 |
439376105624 737643102222 746316165749 863053761002 990232121269 |
| סאו פאולו | southamerica-east1 |
133435938206 376122552368 485381725001 796391836836 990232121269 |
| סנטיאגו | southamerica-west1 |
1087357303029 348543783783 659924941015 862900136725 990232121269 |
| איווה | us-central1 |
298453567688 788415223852 850878823175 986263347210 990232121269 |
| דרום קרוליינה | us-east1 |
1055108947046 1084124504460 335013112247 724101498857 990232121269 |
| צפון וירג'יניה | us-east4 |
1029854080039 517474920593 970314007431 98298633330 990232121269 |
| קולומבוס, אוהיו | us-east5 |
1018267783826 386306739011 420397636038 778968775575 990232121269 |
| דאלאס | us-south1 |
1000457898916 1047122215716 241710172671 955278753983 990232121269 |
| אורגון | us-west1 |
232019391832 341405773774 376906440760 477215631937 990232121269 |
| לוס אנג'לס | us-west2 |
1082081077124 593499865061 796558996990 812061960238 990232121269 |
| סולט לייק סיטי | us-west3 |
34769458069 488393466740 870087576864 878441810105 990232121269 |
| לאס וגאס | us-west4 |
219770299440 421529192039 516260452158 653925368482 990232121269 |
| אירופה | ||
| ורשה | europe-central2 |
408105394529 556626738827 613447812609 875068591969 990232121269 |
| פינלנד | europe-north1 |
1049140453480 148002628360 610856287987 657186468367 990232121269 |
| שטוקהולם | europe-north2 |
264708615094 275871864623 353052212156 915614473443 990232121269 |
| מדריד | europe-southwest1 |
1035291313153 1048466610864 16585749286 684773867031 990232121269 |
| בלגיה | europe-west1 |
311010690362 337985836396 348525528820 874692481832 990232121269 |
| ברלין | europe-west10 |
1014021387408 1021109191575 1076988971454 965306537493 990232121269 |
| טורינו | europe-west12 |
624998300135 664251133452 672417986210 702529954322 990232121269 |
| לונדון | europe-west2 |
1013046052024 424062913611 625972158490 707263280432 990232121269 |
| פרנקפורט | europe-west3 |
1087781646048 143240061766 312688138599 715827071311 990232121269 |
| הולנד | europe-west4 |
110044889848 398757511504 557234723212 769143166592 990232121269 |
| ציריך | europe-west6 |
163551586425 378713015688 416925392034 669890417706 990232121269 |
| מילאנו | europe-west8 |
103481800693 1082157965924 23655501621 555661886352 990232121269 |
| פריז | europe-west9 |
1085882338778 176207547936 221990904254 670920836007 990232121269 |
| אסיה ואזור האוקיינוס השקט | ||
| טייוואן | asia-east1 |
21873972082 271898158674 389278959284 922460772707 990232121269 |
| הונג קונג | asia-east2 |
263483805684 773980783174 865347783058 90665746791 990232121269 |
| טוקיו | asia-northeast1 |
415417931028 53965067050 953665196151 983967577764 990232121269 |
| אוסקה | asia-northeast2 |
205726704771 478186599828 57312416489 861476638029 990232121269 |
| סיאול | asia-northeast3 |
320159292295 548035635347 791473645597 935702892639 990232121269 |
| מומבאי | asia-south1 |
13592990997 229940966341 68960523189 901420668689 990232121269 |
| דלהי | asia-south2 |
496191507005 54806403576 741779061357 809478923584 990232121269 |
| סינגפור | asia-southeast1 |
541653567103 60558171982 753901882843 944188302893 990232121269 |
| ג'קארטה | asia-southeast2 |
1074047252998 17464964742 271871433529 427023413305 990232121269 |
| בנגקוק | asia-southeast3 |
1020436856624 355273974477 603543103680 777922772431 990232121269 |
| סידני | australia-southeast1 |
163046745040 591848239128 623326425100 814418810594 990232121269 |
| מלבורן | australia-southeast2 |
1062391852597 441829466914 714897033691 748594785463 990232121269 |
| המזרח התיכון | ||
| דוחה | me-central1 |
260539430499 380691191456 707684919235 799708208022 990232121269 |
| דמאם | me-central2 |
1067269861014 364585730608 702115426609 932431265647 990232121269 |
| תל אביב | me-west1 |
356023739839 748664533815 869899828196 940471234508 990232121269 |
| אפריקה | ||
| יוהנסבורג | africa-south1 |
366497204741 900693348777 930834390708 990232121269 995904484959 |
| אחר | ||
| AWS ap-northeast-2 | aws-ap-northeast-2 |
118757274428 227045504542 31525566793 415505940944 990232121269 |
| AWS ap-southeast-2 | aws-ap-southeast-2 |
179772227799 236687515237 779037664799 925378406445 990232121269 |
| AWS eu-central-1 | aws-eu-central-1 |
469423327197 5211207427 905007897524 989902812500 990232121269 |
| AWS eu-west-1 | aws-eu-west-1 |
477582827438 653238211450 795832028199 961178626984 990232121269 |
| AWS us-east-1 | aws-us-east-1 |
1005783963369 293187121246 622189180485 78860240845 990232121269 |
| AWS us-west-2 | aws-us-west-2 |
206681800614 264089603202 419256100048 79353630998 990232121269 |
| Azure eastus2 | azure-eastus2 |
1021739993926 1054000274357 495696597482 590387575526 990232121269 |
| Azure westus2 | azure-westus2 |
118244543872 242088193076 278777007439 662989519829 990232121269 |
| מיקום פנימי בלבד (europe-west15) | europe-west15 |
1075380375245 635354739083 663432613496 904125362271 990232121269 |
| מיקום פנימי בלבד (us-central2) | us-central2 |
1085843140251 269725830808 498892726043 68311303080 990232121269 |
| מיקום פנימי בלבד (us-east7) | us-east7 |
173063949542 661852837608 704905947583 956740768291 990232121269 |
| מיקום סינתטי (us-synthetic1) | us-synthetic1 |
131957618958 250975404179 740244847288 787843086952 990232121269 |
| מיקום פנימי בלבד (us-west8) | us-west8 |
13105749132 248649202605 477355088721 653053504449 990232121269 |
ערוץ התקשורת בין הסוכן שפועל בשרת מקומי לבין שירות העברת הנתונים ל-BigQuery הוא פרסום הודעות Pub/Sub בנושא של כל העברה. שירות העברת הנתונים ל-BigQuery צריך לשלוח פקודות לסוכן כדי לחלץ נתונים, והסוכן צריך לפרסם הודעות בחזרה לשירות העברת הנתונים ל-BigQuery כדי לעדכן את הסטטוס ולהחזיר תגובות לחילוץ נתונים.
יצירת קובץ סכימה בהתאמה אישית
כדי להשתמש בקובץ סכימה בהתאמה אישית במקום בזיהוי סכימה אוטומטי, צריך ליצור קובץ כזה באופן ידני או לבקש מסוכן ההעברה ליצור אותו בשבילכם כשמפעילים את הסוכן.
אם אתם יוצרים קובץ סכימה באופן ידני ומתכוונים להשתמש במסוף Cloud de Confiance כדי ליצור העברה, אתם צריכים להעלות את קובץ הסכימה לקטגוריה של Cloud Storage באותו פרויקט שבו אתם מתכננים להשתמש להעברה.
הורדת סוכן ההעברה
מורידים את סוכן המיגרציה למכונה שיכולה להתחבר למחסן הנתונים. מעבירים את קובץ ה-JAR של סוכן המיגרציה לאותה ספרייה שבה נמצא קובץ ה-JAR של מנהל ההתקן Teradata JDBC.
הגדרת קובץ פרטי כניסה למודול גישה
אם אתם משתמשים במודול הגישה ל-Cloud Storage עם כלי Teradata Parallel Transporter (TPT) לחילוץ, נדרש קובץ אישורים.
לפני שיוצרים קובץ פרטי כניסה, צריך ליצור מפתח של חשבון שירות. מקובץ המפתח של חשבון השירות שהורדתם, מקבלים את המידע הבא:
client_email-
private_key: מעתיקים את כל התווים שבין-----BEGIN PRIVATE KEY-----ל------END PRIVATE KEY-----, כולל כל התווים/n, בלי המירכאות הכפולות שמקיפות אותם.
אחרי שמשיגים את המידע הנדרש, יוצרים קובץ פרטי כניסה. דוגמה לקובץ פרטי כניסה עם מיקום ברירת מחדל של $HOME/.gcs/credentials:
[default] gcs_access_key_id = ACCESS_ID gcs_secret_access_key = ACCESS_KEY
מחליפים את מה שכתוב בשדות הבאים:
-
ACCESS_ID: מזהה מפתח הגישה או הערךclient_emailבקובץ המפתח של חשבון השירות. -
ACCESS_KEY: מפתח הגישה הסודי, או הערךprivate_keyבקובץ המפתח של חשבון השירות.
הגדרת העברה
יוצרים העברה באמצעות שירות העברת הנתונים ל-BigQuery.
אם רוצים שקובץ סכימה מותאם אישית ייווצר באופן אוטומטי, צריך להשתמש בסוכן ההעברה כדי להגדיר את ההעברה.
אי אפשר ליצור העברה על פי דרישה באמצעות כלי שורת הפקודה bq. במקום זאת, צריך להשתמש ב Cloud de Confiance מסוף או ב-BigQuery Data Transfer Service API.
אם יוצרים העברה חוזרת, מומלץ מאוד לציין קובץ סכימה כדי שניתן יהיה לחלק את הנתונים מההעברות הבאות למחיצות בצורה נכונה כשהם נטענים ל-BigQuery. בלי קובץ סכימה, שירות העברת הנתונים ל-BigQuery מסיק את סכימת הטבלה מנתוני המקור שמועברים, וכל המידע על חלוקה למחיצות, אשכולות, מפתחות ראשיים ומעקב אחר שינויים אובד. בנוסף, ההעברות הבאות מדלגות על טבלאות שהועברו בעבר אחרי ההעברה הראשונית. מידע נוסף על יצירת קובץ סכימה זמין במאמר בנושא קובץ סכימה בהתאמה אישית.
המסוף
במסוף Cloud de Confiance , עוברים לדף BigQuery.
לוחצים על העברות נתונים.
לוחצים על יצירת העברה.
בקטע Source type (סוג המקור), מבצעים את הפעולות הבאות:
- בוחרים באפשרות העברה: Teradata.
- בשדה שם הגדרת ההעברה, מזינים שם לתצוגה של ההעברה, כמו
My Migration. השם לתצוגה יכול להיות כל ערך שיאפשר לכם לזהות את ההעברה אם תצטרכו לשנות אותה בהמשך. - אופציונלי: בשדה Schedule options (אפשרויות תזמון), אפשר להשאיר את ערך ברירת המחדל Daily (יומי) (על סמך שעת היצירה) או לבחור שעה אחרת אם רוצים העברה חוזרת מצטברת. אחרת, בוחרים באפשרות על פי דרישה להעברה חד-פעמית.
בהגדרות היעד, בוחרים את קבוצת הנתונים המתאימה.
בקטע פרטים על מקור הנתונים, ממשיכים עם פרטים ספציפיים להעברה מ-Teradata.
- בקטע Database type (סוג מסד הנתונים), בוחרים באפשרות Teradata.
- בשדה Cloud Storage bucket (קטגוריה של Cloud Storage), מחפשים את השם של קטגוריית Cloud Storage שבה מאחסנים את נתוני המיגרציה. לא מקלידים את הקידומת
gs://– מזינים רק את שם הקטגוריה. - בשדה שם מסד הנתונים, מזינים את השם של מסד הנתונים של המקור ב-Teradata.
בשדה Table name patterns (תבניות של שמות טבלאות), מזינים תבנית להתאמת שמות הטבלאות במסד הנתונים של המקור. אפשר להשתמש בביטויים רגולריים כדי לציין את התבנית. לדוגמה:
-
sales|expensesתואם לטבלאות שנקראותsalesו-expenses. -
.*matches all tables.
-
בשדה כתובת האימייל בחשבון השירות, מזינים את כתובת האימייל שמשויכת לפרטי הכניסה של חשבון השירות שבהם סוכן ההעברה משתמש.
אופציונלי: בשדה נתיב לקובץ סכימה, מזינים את הנתיב ואת שם הקובץ של קובץ סכימה מותאם אישית. מידע נוסף על יצירת קובץ סכימה בהתאמה אישית זמין במאמר קובץ סכימה בהתאמה אישית. אפשר להשאיר את השדה הזה ריק כדי ש-BigQuery יזהה אוטומטית את סכימת טבלת המקור.
אופציונלי: בשדה ספריית הבסיס של פלט התרגום, מזינים את הנתיב ואת שם הקובץ של קובץ מיפוי הסכימה שסופק על ידי מנוע התרגום של BigQuery. מידע נוסף על יצירת קובץ מיפוי סכימה זמין במאמר שימוש בפלט של מנוע התרגום לסכימה (גרסת Preview). אפשר להשאיר את השדה הזה ריק כדי ש-BigQuery יזהה אוטומטית את סכימת טבלת המקור.
אופציונלי: כדי להפעיל את העלאה ישירה ל-GCS, מסמנים את תיבת הסימון כדי להפעיל את מודול הגישה ל-Cloud Storage.
בתפריט Service Account, בוחרים חשבון שירות מתוך חשבונות השירות שמשויכים לCloud de Confiance פרויקט. אפשר לשייך חשבון שירות להעברה במקום להשתמש בפרטי הכניסה של המשתמש. מידע נוסף על שימוש בחשבונות שירות בהעברות נתונים זמין במאמר שימוש בחשבונות שירות.
- אם נכנסתם באמצעות זהות מאוחדת, תצטרכו ליצור חשבון שירות כדי ליצור העברה. אם נכנסתם באמצעות חשבון Google, חשבון שירות להעברה הוא אופציונלי.
- לחשבון השירות צריכות להיות ההרשאות הנדרשות.
אופציונלי: בקטע אפשרויות התראות, מבצעים את הפעולות הבאות:
לוחצים על Save.
בדף פרטי ההעברה, לוחצים על הכרטיסייה הגדרה.
חשוב לשים לב לשם המשאב של ההעברה הזו, כי תצטרכו אותו כדי להפעיל את סוכן ההעברה.
BQ
כשיוצרים העברה של Cloud Storage באמצעות הכלי bq, הגדרת ההעברה מוגדרת לחזרה כל 24 שעות. להעברות על פי דרישה, משתמשים במסוף Cloud de Confiance או בממשק ה-API של שירות העברת נתונים ל-BigQuery.
אי אפשר להגדיר התראות באמצעות הכלי bq.
מזינים את הפקודה bq mk ומספקים את הדגל ליצירת העברה --transfer_config. נדרשים גם הדגלים הבאים:
--data_source--display_name--target_dataset--params
bq mk \ --transfer_config \ --project_id=project ID \ --target_dataset=dataset \ --display_name=name \ --service_account_name=service_account \ --params='parameters' \ --data_source=data source
כאשר:
- project ID הוא מזהה הפרויקט. אם לא מציינים את
--project_idכדי לציין פרויקט מסוים, המערכת משתמשת בפרויקט ברירת המחדל. - dataset הוא מערך הנתונים שרוצים לטרגט (
--target_dataset) בהגדרת ההעברה. - name הוא השם לתצוגה (
--display_name) של הגדרת ההעברה. השם לתצוגה של ההעברה יכול להיות כל ערך שיאפשר לכם לזהות את ההעברה אם תצטרכו לשנות אותה בהמשך. - service_account הוא שם חשבון השירות שמשמש לאימות ההעברה. חשבון השירות צריך להיות בבעלות אותו
project_idששימש ליצירת ההעברה, וצריכות להיות לו כל ההרשאות הנדרשות שמופיעות ברשימה. - parameters מכיל את הפרמטרים (
--params) של הגדרת ההעברה שנוצרה בפורמט JSON. לדוגמה:--params='{"param":"param_value"}'.- בהעברות של Teradata, משתמשים בפרמטרים הבאים:
-
bucketהיא קטגוריה של Cloud Storage שתשמש כאזור זמני במהלך המיגרציה. -
database_typeהוא Teradata. -
agent_service_accountהיא כתובת האימייל שמשויכת לחשבון השירות שיצרתם. -
database_nameהוא השם של מסד הנתונים של המקור ב-Teradata. -
table_name_patternsהוא תבנית או תבניות להתאמת שמות הטבלאות במסד הנתונים של המקור. אפשר להשתמש בביטויים רגולריים כדי לציין את התבנית. הדפוס צריך להתאים לתחביר של ביטוי רגולרי ב-Java. לדוגמה:-
sales|expensesתואם לטבלאות שנקראותsalesו-expenses. -
.*matches all tables.
-
-
is_direct_gcs_unload_enabledהוא דגל בוליאני להפעלת פריקה ישירה ל-Cloud Storage.
-
- בהעברות של Teradata, משתמשים בפרמטרים הבאים:
- data_source הוא מקור הנתונים (
--data_source):on_premises.
לדוגמה, הפקודה הבאה יוצרת העברה של Teradata בשם My Transfer באמצעות קטגוריה של Cloud Storage mybucket וקבוצת נתונים של יעד mydataset. במהלך ההעברה, כל הטבלאות ממחסן הנתונים של Teradata mydatabase יועברו, וקובץ הסכימה האופציונלי הוא myschemafile.json.
bq mk \ --transfer_config \ --project_id=123456789876 \ --target_dataset=MyDataset \ --display_name='My Migration' \ --params='{"bucket": "mybucket", "database_type": "Teradata", "database_name":"mydatabase", "table_name_patterns": ".*", "agent_service_account":"myemail@mydomain.com", "schema_file_path": "gs://mybucket/myschemafile.json", "is_direct_gcs_unload_enabled": true}' \ --data_source=on_premises
אחרי הרצת הפקודה, תקבלו הודעה כמו זו:
[URL omitted] Please copy and paste the above URL into your web browser and
follow the instructions to retrieve an authentication code.
פועלים לפי ההוראות ומדביקים את קוד האימות בשורת הפקודה.
API
משתמשים בשיטה projects.locations.transferConfigs.create ומספקים מופע של המשאב TransferConfig.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
סוכן העברה
אפשר גם להגדיר את ההעברה ישירות מסוכן ההעברה. מידע נוסף זמין במאמר בנושא הפעלת סוכן ההעברה.
הפעלת סוכן ההעברה
כדי לבצע העברה חדשה, צריך לאתחל את סוכן ההעברה. צריך לבצע את ההגדרה הראשונית רק פעם אחת להעברה, בין אם היא חוזרת או לא. האתחול רק מגדיר את סוכן ההעברה, הוא לא מתחיל את ההעברה.
אם אתם מתכוונים להשתמש בסוכן ההעברה כדי ליצור קובץ סכמה בהתאמה אישית, ודאו שיש לכם ספרייה עם הרשאת כתיבה בספריית העבודה, עם אותו שם של הפרויקט שבו אתם רוצים להשתמש להעברה. כאן סוכן ההעברה יוצר את קובץ הסכימה.
לדוגמה, אם אתם עובדים ב-/home ומגדירים את ההעברה בפרויקט myProject, צריך ליצור את הספרייה /home/myProject ולוודא שהמשתמשים יכולים לכתוב בה.
פותחים סשן חדש. בשורת הפקודה, מריצים את פקודת האתחול, שמופיעה בפורמט הבא:
java -cp \ OS-specific-separated-paths-to-jars (JDBC and agent) \ com.google.cloud.bigquery.dms.Agent \ --initialize
בדוגמה הבאה מוצגת פקודת האתחול כשקובצי ה-JAR של מנהל ההעברה ושל מנהל ה-JDBC נמצאים בספרייה מקומית
migration:Unix, Linux, Mac OS
java -cp \ /usr/local/migration/terajdbc4.jar:/usr/local/migration/mirroring-agent.jar \ com.google.cloud.bigquery.dms.Agent \ --initialize
Windows
מעתינים את כל הקבצים לתיקייה
C:\migration(או משנים את הנתיבים בפקודה), ואז מריצים את הפקודה:java -cp C:\migration\terajdbc4.jar;C:\migration\mirroring-agent.jar com.google.cloud.bigquery.dms.Agent --initialize
כשמוצגת ההודעה, מגדירים את האפשרויות הבאות:
- בוחרים אם לשמור את תבנית Teradata Parallel Transporter (TPT) בדיסק. אם אתם מתכננים להשתמש בשיטת החילוץ TPT, אתם יכולים לשנות את התבנית השמורה באמצעות פרמטרים שמתאימים למופע Teradata שלכם.
- מקלידים את הנתיב לספרייה מקומית שעבודת ההעברה יכולה להשתמש בה לחילוץ קבצים. מוודאים שיש לכם את נפח האחסון המינימלי המומלץ, כפי שמתואר במאמר בנושא שיטת חילוץ.
- מקלידים את שם המארח של מסד הנתונים.
- מקלידים את יציאת מסד הנתונים.
- בוחרים אם להשתמש ב-Teradata Parallel Transporter (TPT) כשיטת החילוץ.
- אופציונלי: מקלידים את הנתיב לקובץ פרטי הכניסה למסד נתונים.
בוחרים אם לציין שם של הגדרה בשירות העברת נתונים ל-BigQuery.
אם אתם מאתחלים את סוכן ההעברה להעברה שכבר הגדרתם, אתם צריכים לעשות את הפעולות הבאות:
- מקלידים את שם המשאב של ההעברה. אפשר למצוא את זה בכרטיסייה הגדרה בדף פרטי ההעברה של ההעברה.
- כשמוצגת בקשה, מקלידים נתיב ושם קובץ לקובץ התצורה של סוכן ההעברה שייווצר. מתייחסים לקובץ הזה כשמריצים את סוכן ההעברה כדי להתחיל את ההעברה.
- מדלגים על השלבים הנותרים.
אם אתם משתמשים בסוכן ההעברה כדי להגדיר העברה, מקישים על Enter כדי לדלג להנחיה הבאה.
מקלידים את Cloud de Confiance by S3NS מזהה הפרויקט.
מקלידים את השם של מסד הנתונים של המקור ב-Teradata.
מקלידים תבנית להתאמת שמות הטבלאות במסד הנתונים של המקור. אפשר להשתמש בביטויים רגולריים כדי לציין את התבנית. לדוגמה:
-
sales|expensesתואם לטבלאות שנקראותsalesו-expenses. -
.*matches all tables.
-
אופציונלי: מקלידים את הנתיב לקובץ סכימת JSON מקומי. מומלץ מאוד להשתמש באפשרות הזו להעברות חוזרות.
אם אתם לא משתמשים בקובץ סכימה, או אם אתם רוצים שהכלי להעברת נתונים ייצור קובץ כזה בשבילכם, מקישים על Enter כדי לדלג להנחיה הבאה.
בוחרים אם ליצור קובץ סכימה חדש.
אם אתם רוצים ליצור קובץ סכימה:
- מקלידים
yes. - מקלידים את שם המשתמש של משתמש Teradata שיש לו גישת קריאה לטבלאות המערכת ולטבלאות שרוצים להעביר.
מקלידים את הסיסמה של המשתמש.
סוכן ההעברה יוצר את קובץ הסכימה ומציג את המיקום שלו.
משנים את קובץ הסכימה כדי לסמן את העמודות של חלוקה למחיצות, אשכולות, מפתחות ראשיים ומעקב אחר שינויים, ומוודאים שרוצים להשתמש בסכימה הזו להגדרת ההעברה. אפשר לקבל טיפים במאמר בנושא קובץ סכימה בהתאמה אישית.
לוחצים על
Enterכדי לדלג להנחיה הבאה.
אם לא רוצים ליצור קובץ סכימה, מקלידים
no.- מקלידים
מקלידים את השם של קטגוריית היעד ב-Cloud Storage לאחסון זמני של נתוני ההעברה לפני הטעינה ל-BigQuery. אם סוכן ההעברה יצר קובץ סכימה בהתאמה אישית, הוא גם מועלה לקטגוריה הזו.
מקלידים את השם של מערך הנתונים ביעד ב-BigQuery.
מקלידים שם מוצג להגדרת ההעברה.
מקלידים נתיב ושם קובץ לקובץ התצורה של סוכן ההעברה שייווצר.
אחרי שמזינים את כל הפרמטרים הנדרשים, סוכן ההעברה יוצר קובץ הגדרות ומייצא אותו לנתיב המקומי שצוין. בסעיף הבא מוסבר על קובץ ההגדרות.
קובץ תצורה לסוכן ההעברה
קובץ התצורה שנוצר בשלב ההפעלה נראה כך:
{
"agent-id": "81f452cd-c931-426c-a0de-c62f726f6a6f",
"transfer-configuration": {
"project-id": "123456789876",
"location": "us",
"id": "61d7ab69-0000-2f6c-9b6c-14c14ef21038"
},
"source-type": "teradata",
"console-log": false,
"silent": false,
"teradata-config": {
"connection": {
"host": "localhost"
},
"local-processing-space": "extracted",
"database-credentials-file-path": "",
"max-local-storage": "50GB",
"gcs-upload-chunk-size": "32MB",
"use-tpt": true,
"transfer-views": false,
"max-sessions": 0,
"spool-mode": "NoSpool",
"max-parallel-upload": 4,
"max-parallel-extract-threads": 1,
"session-charset": "UTF8",
"max-unload-file-size": "2GB"
}
}
אפשרויות של משימת העברה בקובץ ההגדרות של סוכן ההעברה
-
transfer-configuration: מידע על הגדרת ההעברה הזו ב-BigQuery.
teradata-config: מידע שספציפי לחילוץ הזה של Teradata:-
connection: מידע על שם המארח והיציאה -
local-processing-space: תיקיית החילוץ שאליה הסוכן יחלץ את נתוני הטבלה לפני שיעלה אותם ל-Cloud Storage. -
database-credentials-file-path: (אופציונלי) הנתיב לקובץ שמכיל פרטי כניסה להתחברות אוטומטית למסד הנתונים של Teradata. הקובץ צריך להכיל שתי שורות של פרטי הכניסה. אפשר להשתמש בשם משתמש ובסיסמה, כמו בדוגמה הבאה: אפשר גם להשתמש בסוד מ-SecretManager במקום זאת:username=abc password=123
כשמשתמשים בקובץ פרטי כניסה, חשוב לשלוט בגישה לתיקייה שבה מאחסנים אותו במערכת הקבצים המקומית, כי הוא לא מוצפן. אם לא מספקים נתיב, תתבקשו להזין שם משתמש וסיסמה כשמפעילים סוכן.username=abc secret_resource_id=projects/my-project/secrets/my-secret-name/versions/1
max-local-storage: נפח האחסון המקומי המקסימלי לשימוש בחילוץ בספריית ההכנה שצוינה. ערך ברירת המחדל הוא50GB. הפורמט הנתמך הוא:numberKB|MB|GB|TB.בכל מצבי החילוץ, הקבצים נמחקים מהספרייה המקומית הזמנית אחרי שהם מועלים ל-Cloud Storage.
use-tpt: מכוון את סוכן ההעברה להשתמש ב-Teradata Parallel Transporter (TPT) כשיטת חילוץ.עבור כל טבלה, סוכן ההעברה יוצר סקריפט TPT, מתחיל תהליך
tbuildוממתין לסיום. אחרי שהתהליךtbuildמסתיים, הסוכן מפרט את הקבצים שחולצו ומעלה אותם ל-Cloud Storage, ואז מוחק את סקריפט ה-TPT. מידע נוסף זמין במאמר בנושא שיטת החילוץ.
transfer-views: מכוון את סוכן ההעברה להעביר גם נתונים מתצוגות. משתמשים באפשרות הזו רק אם רוצים להתאים אישית את הנתונים במהלך ההעברה. במקרים אחרים, אפשר להעביר את התצוגות לתצוגות ב-BigQuery. כדי להשתמש באפשרות הזו, צריכים להתקיים התנאים הבאים:- אפשר להשתמש באפשרות הזו רק ב-Teradata מגרסה 16.10 ומעלה.
- לתצוגה צריכה להיות מוגדרת עמודה של מספרים שלמים בשם partition, שמצביעה על מזהה של חלוקה למחיצות עבור השורה הנתונה בטבלה הבסיסית.
max-sessions: מציין את המספר המקסימלי של סשנים שמשמשים את עבודת החילוץ (FastExport או TPT). אם הערך הוא 0, מסד הנתונים של Teradata יקבע את המספר המקסימלי של סשנים לכל משימת חילוץ.
gcs-upload-chunk-size: קובץ גדול מועלה ל-Cloud Storage במקטעים. הפרמטר הזה, יחד עםmax-parallel-upload, משמשים לקביעת כמות הנתונים שמועלים ל-Cloud Storage בו-זמנית. לדוגמה, אםgcs-upload-chunk-sizeהוא 64MB ו-max-parallel-uploadהוא 10MB, אז באופן תיאורטי סוכן העברה יכול להעלות 640MB (64MB * 10) של נתונים בו-זמנית. אם העלאת המקטע נכשלת, צריך לנסות שוב להעלות את המקטע כולו. גודל המקטע צריך להיות קטן.
max-parallel-upload: הערך הזה קובע את המספר המקסימלי של השרשורים שסוכן ההעברה משתמש בהם כדי להעלות קבצים ל-Cloud Storage. אם לא מציינים ערך, ברירת המחדל היא מספר המעבדים שזמינים למכונה הווירטואלית של Java. הכלל הכללי הוא לבחור את הערך לפי מספר ליבות המעבד במחשב שבו פועל הסוכן. לכן, אם יש לכםnליבות, מספר השרשורים האופטימלי צריך להיותn. אם הליבות הן hyper-threaded, המספר האופטימלי צריך להיות(2 * n). יש גם הגדרות אחרות, כמו רוחב פס ברשת, שצריך לקחת בחשבון כשמשנים אתmax-parallel-upload. שינוי הפרמטר הזה יכול לשפר את הביצועים של ההעלאה ל-Cloud Storage.
spool-mode: ברוב המקרים, מצב NoSpool הוא האפשרות הטובה ביותר. NoSpoolהוא ערך ברירת המחדל בהגדרת הסוכן. אפשר לשנות את הפרמטר הזה אם אחד מהחסרונות של NoSpool רלוונטי למקרה שלכם.
max-unload-file-size: קובע את הגודל המקסימלי של קובץ שחולץ. הפרמטר הזה לא נאכף בחילוצים של TPT.
max-parallel-extract-threads: ההגדרה הזו משמשת רק במצב FastExport. הוא קובע את מספר התהליכונים המקבילים שמשמשים לחילוץ הנתונים מ-Teradata. שינוי הפרמטר הזה יכול לשפר את הביצועים של החילוץ.
tpt-template-path: משתמשים בהגדרה הזו כדי לספק תסריט חילוץ TPT מותאם אישית כקלט. אפשר להשתמש בפרמטר הזה כדי להחיל טרנספורמציות על נתוני ההעברה.
tpt-export-count: האופרטור export אחראי לחילוץ נתונים ממסד הנתונים של Teradata. הפרמטר הזה מבטל את ספירת הייצוא שמוגדרת כברירת מחדל בסקריפט TPT. הערך שלו צריך להיות קטן או שווה לערך של הפרמטרmax-sessionsכדי להבטיח שלכל מופע יהיו מספיק צינורות למסד הנתונים.
tpt-file-writer-count: האופרטור file writer אחראי לקבלת הנתונים מהאופרטור export ולכתיבתם לקובץ פיזי במערכת האחסון. הפרמטר הזה מבטל את ברירת המחדל של מספר האופרטורים file writer בסקריפט TPT. באופן אידיאלי, מספר האופרטורים file writer צריך להיות זהה למספר האופרטורים export. אחרת, ההעברה תהפוך לצוואר בקבוק בקצה של החילוץ או הכתיבה.
schema-mapping-rule-path: (אופציונלי) הנתיב לקובץ תצורה שמכיל מיפוי סכימה לביטול כללי המיפוי שמוגדרים כברירת מחדל. חלק מסוגי המיפוי פועלים רק במצב Teradata Parallel Transporter (TPT).דוגמה: מיפוי מסוג Teradata
TIMESTAMPלסוג BigQueryDATETIME:{ "rules": [ { "database": { "name": "database.*", "tables": [ { "name": "table.*" } ] }, "match": { "type": "COLUMN_TYPE", "value": "TIMESTAMP" }, "action": { "type": "MAPPING", "value": "DATETIME" } } ] }
מאפיינים:
-
database: (אופציונלי)nameהוא ביטוי רגולרי למסדי נתונים שרוצים לכלול. כל מסדי הנתונים נכללים כברירת מחדל. -
tables: (אופציונלי) מכיל מערך של טבלאות. nameהוא ביטוי רגולרי לטבלאות שצריך לכלול. כברירת מחדל, כל הטבלאות נכללות. match: (חובה)- ערכים נתמכים של
type:COLUMN_TYPE. - ערכים נתמכים של
value:TIMESTAMP, DATETIME.
- ערכים נתמכים של
action: (חובה)- ערכים נתמכים של
type:MAPPING. - ערכים נתמכים של
value:TIMESTAMP, DATETIME.
- ערכים נתמכים של
-
compress-output: (אופציונלי) קובע אם הנתונים צריכים להיות דחוסים לפני האחסון ב-Cloud Storage. ההגדרה הזו חלה רק ב-tpt-mode. ערך ברירת המחדל הואfalse.
gcs-module-config-dir: (אופציונלי) הנתיב אל קובץ פרטי הכניסה לגישה לקטגוריה של Cloud Storage. ספריית ברירת המחדל היא$HOME/.gcs, אבל אפשר להשתמש בפרמטר הזה כדי לשנות את הספרייה.
gcs-module-connection-count: (אופציונלי) מציין את מספר חיבורי ה-TCP לשירות Cloud Storage. ערך ברירת המחדל הוא 10.
gcs-module-buffer-size: (אופציונלי) מציין את הגודל של המאגרים לשימוש בחיבורי ה-TCP. ברירת המחדל היא 8MB (8,388,608 בייטים). כדי להקל על השימוש, אפשר להשתמש במכפילים הבאים:k (1000)K (1024)m (1000 * 1000)M (1024*1024)
gcs-module-buffer-count: (אופציונלי) מציין את מספר המאגרים שישמשו עם חיבורי ה-TCP שצוינו על ידיgcs-module-connection-count. מומלץ להשתמש בערך ששווה לכפליים של מספר חיבורי ה-TCP לשירות Cloud Storage. ערך ברירת המחדל הוא 2 *gcs-module-connection-count.
gcs-module-max-object-size: (אופציונלי) הפרמטר הזה קובע את הגודל של אובייקטים ב-Cloud Storage. הערך של הפרמטר הזה יכול להיות מספר שלם או מספר שלם שאחריו מופיע, ללא רווח, אחד מהמכפילים הבאים:k (1000)K (1024)m (1000 * 1000)M (1024*1024)
gcs-module-writer-instances: (אופציונלי) הפרמטר הזה מציין את מספר המופעים של כלי הכתיבה של Cloud Storage. ערך ברירת המחדל הוא 1. אפשר להגדיל את הערך הזה כדי להגדיל את קצב העברת הנתונים במהלך שלב הכתיבה של ייצוא TPT.
-
אופטימיזציה של חילוץ נתונים מסוכנים
אפשר לבצע אופטימיזציה של תהליך חילוץ הנתונים ולייעל את תהליך ההעברה הכולל על ידי שינוי פרמטרים של הסוכן.
בטבלה הבאה מפורט מידע על הפרמטרים שבהם אפשר להשתמש כדי לשפר את ההעברה:
| פרמטר | ערך מומלץ | תיאור |
|---|---|---|
gcs-module-writer-instances |
4 | הגדלת ההקבלה לחילוץ TPT ולפעולות כתיבה ב-Cloud Storage. כדאי לשנות את הערך הזה כדי לאזן בין אופטימיזציה של ההעברה לבין העומס על מופע Teradata. |
gcs-module-connection-count |
10 | הגדרת מספר חיבורי ה-TCP ל-Cloud Storage. הגדלת הערך הזה משפרת את ההקבלה במהלך שלב ההעלאה ל-Cloud Storage. |
gcs-module-buffer-size |
32 דקות | ההגדרה מגדירה את גודל המאגרים לחיבורי TCP. הבדיקה מצביעה על כך שהערך 32m מספק תוצאות אופטימליות. |
tpt-export-count |
הערך חייב להיות קטן מהערך max-sessions או שווה לו. |
הערך הזה מחליף את מספר האופרטורים שמוגדר כברירת מחדל לייצוא בסקריפט TPT. כדי להבטיח שלכל מופע יהיו מספיק צינורות לנתונים במסד הנתונים, הערך צריך להיות קטן או שווה לערך max-sessions. |
tpt-file-writer-count |
הערך צריך להיות זהה לערך של export-count. |
הערך הזה מבטל את מספר האופרטורים של כתיבת הקובץ שמוגדר כברירת מחדל בסקריפט TPT. מומלץ שהערך הזה יהיה זהה לערך של tpt-export-count כדי למנוע צווארי בקבוק. |
כדאי ליישם את השיטות המומלצות הבאות להגדרה:
מגבלת זיכרון: מוודאים שהתוצאה של החישוב הבא קטנה מהזיכרון הכולל של המכונה הווירטואלית (VM) שבה פועל הסוכן. חשוב להשתמש ביחידות עקביות לכל הערכים בחישוב.
$$ \text{gcs-module-writer-instances} \times \text{gcs-module-buffer-size} \times \text{gcs-module-buffer-count} < \text{Total VM memory} $$סדר ההתאמה:
- קודם צריך לשנות את ערך הפרמטר
gcs-module-writer-instancesכדי למצוא את האיזון הטוב ביותר בין הביצועים לבין העומס. - אם רוצים לשפר עוד יותר את הביצועים, צריך להגדיל את הערך של
gcs-module-connection-count.
- קודם צריך לשנות את ערך הפרמטר
התאמה אוטומטית לעומס (scaling): כברירת מחדל, הערך של הפרמטר
gcs-module-buffer-sizeמוגדר בדרך כלל כפול ממספר החיבורים, אבל אנחנו ממליצים להגדיר את הערך ל-32mבאופן מפורש עבור עומסי העבודה האלה.
הפעלת סוכן ההעברה
אחרי שמאתחלים את סוכן ההעברה ויוצרים את קובץ ההגדרות, מבצעים את השלבים הבאים כדי להפעיל את הסוכן ולהתחיל את ההעברה:
מריצים את הסוכן על ידי ציון הנתיבים למנהל ההתקן של JDBC, לסוכן ההעברה ולקובץ ההגדרות שנוצר בשלב הקודם של האתחול.
java -cp \ OS-specific-separated-paths-to-jars (JDBC and agent) \ com.google.cloud.bigquery.dms.Agent \ --configuration-file=path to configuration file
Unix, Linux, Mac OS
java -cp \ /usr/local/migration/Teradata/JDBC/terajdbc4.jar:mirroring-agent.jar \ com.google.cloud.bigquery.dms.Agent \ --configuration-file=config.json
Windows
מעתינים את כל הקבצים לתיקייה
C:\migration(או משנים את הנתיבים בפקודה), ואז מריצים את הפקודה:java -cp C:\migration\terajdbc4.jar;C:\migration\mirroring-agent.jar com.google.cloud.bigquery.dms.Agent --configuration-file=config.json
אם אתם מוכנים להמשיך בהעברה, לוחצים על
Enterוהסוכן ימשיך אם נתיב המחלקות שסופק במהלך האתחול תקין.כשמתבקשים, מקלידים את שם המשתמש והסיסמה לחיבור למסד הנתונים. אם שם המשתמש והסיסמה תקינים, מתחילה העברת הנתונים.
אופציונלי בפקודה להפעלת ההעברה, אפשר גם להשתמש בדגל שמעביר קובץ פרטי כניסה לסוכן, במקום להזין את שם המשתמש והסיסמה בכל פעם. מידע נוסף זמין בפרמטר האופציונלי
database-credentials-file-pathבקובץ ההגדרות של הסוכן. כשמשתמשים בקובץ פרטי כניסה, צריך לנקוט באמצעים מתאימים כדי לשלוט בגישה לתיקייה שבה מאחסנים אותו במערכת הקבצים המקומית, כי הוא לא מוצפן.צריך להשאיר את הסשן הזה פתוח עד שההעברה תסתיים. אם יצרתם העברה חוזרת של נתוני מיגרציה, השאירו את הסשן הזה פתוח ללא הגבלת זמן. אם הסשן הזה ייקטע, ההעברות הנוכחיות והעתידיות ייכשלו.
כדאי לעקוב מדי פעם כדי לוודא שהסוכן פועל. אם ההעברה מתבצעת ואף נציג לא מגיב תוך 24 שעות, ההעברה נכשלת.
אם סוכן ההעברה מפסיק לפעול בזמן שההעברה מתבצעת או מתוזמנת, Cloud de Confiance במסוף מוצג סטטוס השגיאה ומוצגת בקשה להפעלה מחדש של הסוכן. כדי להפעיל מחדש את סוכן ההעברה, חוזרים לתחילת הקטע הזה. אין צורך לחזור על פקודת ההפעלה. ההעברה תתחדש מהנקודה שבה הטבלאות לא הושלמו.
מעקב אחרי התקדמות ההעברה
אפשר לראות את סטטוס ההעברה במסוף Cloud de Confiance . אפשר גם להגדיר התראות ב-Pub/Sub או באימייל. מידע נוסף על התראות של שירות העברת נתונים ל-BigQuery
שירות העברת הנתונים ל-BigQuery מתזמן ומפעיל העברת נתונים לפי לוח זמנים שמוגדר בזמן יצירת הגדרות ההעברה. חשוב שהסוכן להעברת נתונים יפעל בזמן שהעברת נתונים פעילה. אם לא מתקבלים עדכונים מהסוכן תוך 24 שעות, העברת הנתונים נכשלת.
דוגמה לסטטוס ההעברה במסוף Cloud de Confiance :
שדרוג סוכן ההעברה
אם יש גרסה חדשה של סוכן ההעברה, צריך לעדכן אותו ידנית. כדי לקבל הודעות על שירות העברת נתונים ל-BigQuery, אפשר להירשם להערות המוצר.
המאמרים הבאים
- אפשר לנסות העברה לצורך בדיקה מ-Teradata ל-BigQuery.
- מידע נוסף על שירות העברת נתונים ל-BigQuery
- העברת קוד SQL באמצעות תרגום SQL באצווה.