מבוא להעברות ב-Amazon S3

שירות העברת הנתונים ל-BigQuery ב-Amazon S3 מאפשר לתזמן ולנהל באופן אוטומטי משימות טעינה חוזרות מ-Amazon S3 ל-BigQuery.

פורמטים נתמכים של קבצים

שירות העברת הנתונים ל-BigQuery תומך בטעינת נתונים מ-Amazon S3 באחד מהפורמטים הבאים:

  • ערכים מופרדים בפסיקים (‎CSV)
  • ‫JSON (מופרד בתו שורה חדשה)
  • Avro
  • Parquet
  • ORC

סוגי דחיסה נתמכים

שירות העברת הנתונים ל-BigQuery ב-Amazon S3 תומך בטעינת נתונים דחוסים. סוגי הדחיסה שנתמכים על ידי שירות העברת הנתונים ל-BigQuery זהים לסוגי הדחיסה שנתמכים על ידי משימות טעינה ב-BigQuery. מידע נוסף זמין במאמר טעינת נתונים דחוסים ולא דחוסים.

דרישות מוקדמות ל-Amazon S3

כדי לטעון נתונים ממקור נתונים של Amazon S3, צריך:

  • מזינים את ה-URI של Amazon S3 לנתוני המקור
  • מזהה מפתח הגישה
  • מפתח הגישה הסודי
  • צריך להגדיר לפחות את המדיניות המנוהלת של AWS‏ AmazonS3ReadOnlyAccess בנתוני המקור של Amazon S3

מזהי URI של Amazon S3

כשמספקים את ה-URI של Amazon S3, הנתיב צריך להיות בפורמט הבא: s3://bucket/folder1/folder2/... נדרש רק שם הקטגוריה ברמה העליונה. הוספת שמות לתיקיות היא אופציונלית. אם מציינים URI שכולל רק את שם הקטגוריה, כל הקבצים בקטגוריה מועברים ונטענים ל-BigQuery.

הגדרת פרמטרים בזמן הריצה של העברה ב-Amazon S3

אפשר לתאר בפרמטרים גם את ה-URI של Amazon S3 וגם את טבלת היעד, ולכן אפשר לטעון נתונים מקטגוריות של Amazon S3 בחלוקה לפי תאריך. הערה: אי אפשר להגדיר פרמטרים לחלק של שם הבאקט ב-URI. הפרמטרים שמשמשים להעברות ב-Amazon S3 זהים לאלה שמשמשים להעברות ב-Cloud Storage.

פרטים נוספים זמינים במאמר בנושא פרמטרים של זמן ריצה בהעברות.

הטמעת נתונים עבור העברות Amazon S3

אתם יכולים לציין איך הנתונים נטענים ל-BigQuery על ידי בחירה בהעדפת כתיבה בהגדרת ההעברה כשמגדירים העברה מ-Amazon S3.

יש שני סוגים של העדפות כתיבה: העברות מצטברות והעברות קטומות.

העברות מצטברות

הגדרת העברה עם העדפת כתיבה APPEND או WRITE_APPEND, שנקראת גם העברה מצטברת, מוסיפה באופן מצטבר נתונים חדשים לטבלת יעד ב-BigQuery מאז ההעברה הקודמת שהושלמה בהצלחה. כשמריצים הגדרת העברה עם העדפת כתיבה APPEND, שירות העברת הנתונים ל-BigQuery מסנן את הקבצים שהשתנו מאז ההרצה הקודמת של ההעברה שהסתיימה בהצלחה. כדי לקבוע מתי בוצעו שינויים בקובץ, שירות העברת הנתונים ל-BigQuery בודק את המטא-נתונים של הקובץ כדי למצוא את המאפיין 'הזמן שבו בוצעו שינויים'. לדוגמה, שירות העברת הנתונים ל-BigQuery בודק את מאפיין חותמת הזמן updated בקובץ Cloud Storage. אם שירות העברת הנתונים ל-BigQuery מוצא קבצים עם 'השעה האחרונה שבה בוצע שינוי' שחלה אחרי חותמת הזמן של ההעברה המוצלחת האחרונה, שירות העברת הנתונים ל-BigQuery מעביר את הקבצים האלה בהעברה מצטברת.

כדי להדגים איך העברות מצטברות פועלות, נשתמש בדוגמה הבאה של העברה ב-Cloud Storage. משתמש יוצר קובץ בקטגוריה של Cloud Storage בשם file_1 בשעה 2023-07-01T00:00Z. ‫updated חותמת הזמן של file_1 היא השעה שבה הקובץ נוצר. לאחר מכן המשתמש יוצר העברה מצטברת מ<ph name="CLOUD_STORAGE_BUCKET">קטגוריה של Cloud Storage</ph>, שמוגדרת להפעלה פעם ביום בשעה 03:00 UTC, החל מ-2023-07-01T03:00Z.

  • ב-2023-07-01T03:00Z, מתחילה ההרצה הראשונה של ההעברה. מכיוון שזו ההפעלה הראשונה של העברת הנתונים בהגדרה הזו, שירות העברת הנתונים ל-BigQuery מנסה לטעון את כל הקבצים שתואמים ל-URI של המקור לטבלה ב-BigQuery. העברת הנתונים מסתיימת בהצלחה ושירות העברת הנתונים ל-BigQuery טוען את file_1 בהצלחה לטבלת היעד ב-BigQuery.
  • בפעולת ההעברה הבאה, בתאריך 2023-07-02T03:00Z, לא מזוהים קבצים שבהם מאפיין חותמת הזמן updated גדול יותר מזה של פעולת ההעברה האחרונה שהסתיימה בהצלחה (2023-07-01T03:00Z). ההעברה מסתיימת בהצלחה בלי לטעון נתונים נוספים לטבלה ב-BigQuery.

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

נמשיך עם אותה דוגמה. נניח שהמשתמש יוצר קובץ נוסף בקטגוריה של Cloud Storage בשעה 2023-07-03T00:00Z, בשם file_2. ‫updated חותמת הזמן של file_2 היא השעה שבה הקובץ נוצר.

  • בהרצת ההעברה הבאה, ב-2023-07-03T03:00Z, המערכת מזהה של-file_2 יש חותמת זמן updated שגדולה מחותמת הזמן של הרצת ההעברה האחרונה שהצליחה (2023-07-01T03:00Z). נניח שכשהפעלתם את ההעברה היא נכשלה בגלל שגיאה זמנית. בתרחיש הזה, הנתונים של file_2 לא נטענים לטבלת היעד ב-BigQuery. חותמת הזמן של ההרצה האחרונה של ההעברה שבוצעה בהצלחה נשארת 2023-07-01T03:00Z.
  • בהרצת ההעברה הבאה, בתאריך 2023-07-04T03:00Z, המערכת מזהה של-file_2 יש חותמת זמן שגדולה מזו של הרצת ההעברה המוצלחת האחרונה (2023-07-01T03:00Z).updated הפעם, הפעלת ההעברה מסתיימת ללא בעיות, ולכן הנתונים מ-file_2 נטענים בהצלחה לטבלת היעד ב-BigQuery.
  • בהרצת ההעברה הבאה, בתאריך 2023-07-05T03:00Z, לא מזוהים קבצים שחותמת הזמן שלהם [updated] גדולה מזו של הרצת ההעברה האחרונה שהסתיימה בהצלחה (2023-07-04T03:00Z). הפעלת ההעברה מסתיימת בהצלחה בלי לטעון נתונים נוספים לטבלת היעד ב-BigQuery.

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

העברות קטועות

הגדרת העברה עם העדפת כתיבה MIRROR או WRITE_TRUNCATE, שנקראת גם העברה קטועה, מחליפה את הנתונים בטבלת היעד ב-BigQuery במהלך כל הרצת העברה בנתונים מכל הקבצים שתואמים ל-URI של המקור. ‫MIRROR מחליף עותק חדש של נתונים בטבלת היעד. אם טבלת היעד משתמשת במעצב מחיצות, הרצת ההעברה מחליפה רק את הנתונים במחיצה שצוינה. טבלת יעד עם קישוט מחיצה היא בפורמט my_table${run_date}, לדוגמה, my_table$20230809.

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

תמיכה בתווים כלליים לחיפוש בכתובות URI של Amazon S3

אם נתוני המקור מופרדים לכמה קבצים עם שם בסיס משותף, אפשר להשתמש בתו כללי ב-URI כשמעלים את הנתונים. תו כללי מורכב מכוכבית (&ast;), ואפשר להשתמש בו בכל מקום ב-URI של Amazon S3, חוץ משם הקטגוריה.

אפשר להשתמש ביותר מתו כללי אחד לחיפוש ב-URI של Amazon S3, אבל אפשר לבצע אופטימיזציה מסוימת כשב-URI של Amazon S3 מצוין רק תו כללי אחד לחיפוש:

  • יש מגבלה גבוהה יותר על המספר המקסימלי של קבצים בכל הפעלה של העברה.

  • התו הכללי לחיפוש יחצה את גבולות הספרייה. לדוגמה, ה-URI של Amazon S3‏ s3://my-bucket/*.csv יתאים לקובץ s3://my-bucket/my-folder/my-subfolder/my-file.csv.

דוגמאות ל-URI של Amazon S3

דוגמה 1

כדי לטעון קובץ יחיד מ-Amazon S3 ל-BigQuery, מציינים את ה-URI של הקובץ ב-Amazon S3.

s3://my-bucket/my-folder/my-file.csv

דוגמה 2

כדי לטעון את כל הקבצים מקטגוריית Amazon S3 ל-BigQuery, מציינים רק את שם הקטגוריה, עם או בלי תבנית wildcard.

s3://my-bucket/

או

s3://my-bucket/*

שימו לב ש-s3://my-bucket* הוא לא URI מותר ב-Amazon S3, כי אי אפשר להשתמש בתו כללי בשם של הקטגוריה.

דוגמה 3

כדי לטעון את כל הקבצים מ-Amazon S3 שיש להם קידומת משותפת, מציינים את הקידומת המשותפת ואחריה תו כללי.

s3://my-bucket/my-folder/*

שימו לב: בניגוד לטעינה של כל הקבצים ממאגר Amazon S3 ברמה העליונה, צריך לציין את התו הכללי בסוף ה-URI של Amazon S3 כדי שכל הקבצים ייטענו.

דוגמה 4

כדי לטעון את כל הקבצים מ-Amazon S3 עם נתיב דומה, מציינים את הקידומת המשותפת ואחריה תו כללי.

s3://my-bucket/my-folder/*.csv

דוגמה 5

שימו לב: התווים הכלליים מכסים ספריות, כך שכל הקבצים csv ב-my-folder, וגם בתיקיות המשנה של my-folder, ייטענו ל-BigQuery.

אם קובצי המקור האלה נמצאים בתיקייה logs:

s3://my-bucket/logs/logs.csv
s3://my-bucket/logs/system/logs.csv
s3://my-bucket/logs/some-application/system_logs.log
s3://my-bucket/logs/logs_2019_12_12.csv

אז המזהים הבאים יציינו אותם:

s3://my-bucket/logs/*

דוגמה 6

אם יש לכם את קובצי המקור האלה, אבל אתם רוצים להעביר רק את הקבצים ששם הקובץ שלהם הוא logs.csv:

s3://my-bucket/logs.csv
s3://my-bucket/metadata.csv
s3://my-bucket/system/logs.csv
s3://my-bucket/system/users.csv
s3://my-bucket/some-application/logs.csv
s3://my-bucket/some-application/output.csv

אז הקוד הבא יזהה את הקבצים עם logs.csv בשם:

s3://my-bucket/*logs.csv

דוגמה 7

השימוש בכמה תווים כלליים מאפשר שליטה רבה יותר בקבצים שמועברים, אבל המגבלות נמוכות יותר. שימוש בכמה תווים כלליים לחיפוש אומר שכל תו כללי לחיפוש יתאים רק עד סוף הנתיב בתוך ספריית משנה. לדוגמה, עבור קובצי המקור הבאים ב-Amazon S3:

s3://my-bucket/my-folder1/my-file1.csv
s3://my-bucket/my-other-folder2/my-file2.csv
s3://my-bucket/my-folder1/my-subfolder/my-file3.csv
s3://my-bucket/my-other-folder2/my-subfolder/my-file4.csv

אם רוצים להעביר רק את my-file1.csv ואת my-file2.csv, צריך להשתמש בערך הבא בשביל ה-URI של Amazon S3:

s3://my-bucket/*/*.csv

מכיוון שאף אחד מהתווים הכלליים לא מתייחס לספריות, ה-URI הזה יגביל את ההעברה רק לקובצי ה-CSV שנמצאים ב-my-folder1 וב-my-other-folder2. תיקיות משנה לא ייכללו בהעברה.

מפתחות גישה ל-AWS

מזהה מפתח הגישה ומפתח הגישה הסודי משמשים לגישה לנתונים ב-Amazon S3 בשמכם. השיטה המומלצת היא ליצור מזהה ייחודי של מפתח גישה ומפתח גישה סודי במיוחד להעברות מ-Amazon S3, כדי להעניק גישה מינימלית לשירות העברת נתונים ל-BigQuery. מידע על ניהול מפתחות גישה מופיע במסמכי העזרה הכלליים של AWS.

הגבלות על כתובות IP

אם אתם משתמשים בהגבלות על כתובות IP לגישה ל-Amazon S3, אתם צריכים להוסיף את טווחי כתובות ה-IP שמשמשים את העובדים של שירות העברת נתונים ל-BigQuery לרשימת כתובות ה-IP המותרות.

כדי להוסיף טווחי כתובות IP ככתובות IP ציבוריות מותרות ל-Amazon S3, אפשר לעיין במאמר בנושא הגבלות על כתובות IP.

שיקולים לגבי עקביות

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

שיטה מומלצת לחישוב עלויות של העברת נתונים יוצאת

העברות מ-Amazon S3 עלולות להיכשל אם טבלת היעד לא הוגדרה כראוי. סיבות אפשריות להגדרה לא תקינה:

  • טבלת היעד לא קיימת.
  • לא הוגדרה סכימת הטבלה.
  • סכימת הטבלה לא תואמת לנתונים שמועברים.

כדי להימנע מעלויות של העברת נתונים יוצאים מ-Amazon S3, מומלץ קודם לבדוק העברה של קבוצת משנה קטנה אבל מייצגת של הקבצים. קטן – הבדיקה צריכה לכלול כמות קטנה של נתונים ומספר קטן של קבצים.

תמחור

מידע על התמחור של שירות העברת נתונים ל-BigQuery זמין בדף תמחור.

חשוב לזכור: השימוש בשירות הזה עלול לגרום לעלויות מחוץ ל-Google. פרטים נוספים מופיעים בדף התמחור של Amazon S3.

מכסות ומגבלות

שירות העברת הנתונים ל-BigQuery משתמש במשימות טעינה כדי לטעון נתונים מ-Amazon S3 ל-BigQuery. כל המכסות וההגבלות של BigQuery על משימות טעינה חלות על העברות חוזרות מ-Amazon S3, עם השיקולים הנוספים הבאים:

ערך הגבלה
הגודל המקסימלי לכל הפעלה של העברת נתונים של משימת טעינה ‫15TB
מספר הקבצים המקסימלי בכל הפעלה של העברה כשמזהה ה-URI של Amazon S3 כולל 0 או 1 תווים כלליים ‫10,000,000 קבצים
מספר הקבצים המקסימלי בכל הפעלה של העברה כשכתובת ה-URI של Amazon S3 כוללת יותר מתו כללי אחד ‫10,000 קבצים

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