פתרון בעיות בהעברת נתונים
בדף הזה מוסבר איך לפתור בעיות שמתעוררות כשמעבירים או טוענים נתונים ל-BigQuery. אפשר לפתור שגיאות נפוצות שקשורות לשירות העברת הנתונים ל-BigQuery, לחיבורי רשת ב- Google Cloud, ב-Amazon Web Services (AWS), ב-Cloud SQL וברשתות של ענן וירטואלי פרטי (VPC), וגם לעבודות של טעינת נתוני CSV מ-Cloud Storage.
פתרון בעיות בהגדרות ההעברה
מידע על פתרון בעיות בשירות העברת נתונים ל-BigQuery זמין במאמר בנושא פתרון בעיות בהגדרות העברה.
אם אתם מגדירים או מפעילים העברות ממקורות נתונים חיצוניים או ממקורות נתונים של שותפים, כדאי לעיין במאמר פתרון בעיות בהגדרת העברה מצד שלישי.
אבחון בעיות במודעות לפרסום משרות באמצעות תצוגות INFORMATION_SCHEMA
אפשר להריץ שאילתות בתצוגה INFORMATION_SCHEMA.JOBS כדי לאבחן עבודות טעינה שנכשלו או שמתבצעות לאט, ושאילתות העברה כמעט בזמן אמת. אם משימת טעינה או שאילתת העברה נכשלות, בודקים את העמודות error_result ו-errors כדי לזהות את שורש הבעיה, כמו אי התאמות בסכימה, מגבלות מכסה או שגיאות הרשאה.
הדוגמאות הבאות לשאילתות INFORMATION_SCHEMA.JOBS נועדו לאחזור פרטי שגיאה של משימות טעינה שנכשלו ב-24 השעות האחרונות:
SELECT job_id, creation_time, user_email, error_result.reason AS error_reason, error_result.message AS error_message, errors FROM `region-REGION`.INFORMATION_SCHEMA.JOBS WHERE job_type = 'LOAD' AND state = 'DONE' AND error_result IS NOT NULL AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) ORDER BY creation_time DESC;
מחליפים את <var>REGION</var> בשם האזור של מערך הנתונים, כמו us או europe-west1.
פתרון בעיות בחיבורים לרשת ההעברה
כשמעבירים נתונים מספקי ענן חיצוניים או ממופעים של מסדי נתונים פרטיים, ניתוב ברשת או כללים של חומת אש יכולים לחסום את הקישוריות. בקטעים הבאים מוסבר איך לפתור בעיות בחיבורים של רשתות פרטיות וחיבורי VPN.
AWS-Google Cloud VPN וקבצים מצורפים לרשת
אם נתקלתם בבעיות בהגדרת הקובץ המצורף לרשת, תוכלו לפעול לפי השלבים הבאים:
- צריך לוודא שחיבורי ה-VPN פועלים במסוף AWS ובמסוף Google Cloud .
- בודקים ביומני ה-VPN אם יש שגיאות או מנות שהושמטו.
- מוודאים שטבלאות הניתוב ב-AWS וב-Google Cloud מוגדרות בצורה נכונה.
- חשוב לוודא שהיציאות הנדרשות פתוחות גם בקבוצות האבטחה של AWS וגם בכללי חומת האש של Google Cloud .
מידע נוסף על הגדרת חיבורי VPN זמין במאמר יצירת חיבור VPN וחיבור רשת ב-AWS-Google Cloud .
גישה למכונות Cloud SQL
אם נתקלתם בבעיות בהגדרת תצורת הרשת, תוכלו לנסות את הפעולות הבאות:
- מוודאים שחיבור ה-VPC נוצר ושהמסלולים מוגדרים בצורה נכונה.
- מוודאים שכללי חומת האש מאפשרים תנועה ביציאות הנדרשות.
- בודקים את יומני ה-proxy של Cloud SQL כדי לראות אם יש שגיאות, ומוודאים שהוא פועל בצורה תקינה.
- מוודאים שהחיבור לרשת מוגדר ומחובר בצורה נכונה.
מידע נוסף על הגדרת גישה פרטית למסד נתונים זמין במאמר חיבור למופע Cloud SQL.
פתרון בעיות בהעלאת קובצי CSV
כשאתם טוענים נתוני CSV מ-Cloud Storage ל-BigQuery, יכול להיות שהמשימות ייכשלו בגלל שגיאות עיצוב, מגבלות על גודל הקובץ או בעיות בזיהוי אוטומטי של הסכימה. בקטעים הבאים מוסבר איך לפתור שגיאות נפוצות בהעלאת קובצי CSV.
פתרון בעיות בניתוח
אם יש בעיה בניתוח קובצי ה-CSV, פרטי השגיאה יופיעו בerrors משאב של משימת הטעינה.
בדרך כלל, השגיאות האלה מציינות את תחילת השורה הבעייתית עם היסט של בייט. כדי לגשת לשורה הרלוונטית בקבצים לא דחוסים, אפשר להשתמש ב-gcloud storage עם הארגומנט --recursive.
לדוגמה, מריצים את הפקודה bq load ומקבלים שגיאה:
bq load
--skip_leading_rows=1 \
--source_format=CSV \
mydataset.mytable \
gs://my-bucket/mytable.csv \
'Number:INTEGER,Name:STRING,TookOffice:STRING,LeftOffice:STRING,Party:STRING'
השגיאה בפלט אמורה להיראות כך:
Waiting on bqjob_r5268069f5f49c9bf_0000018632e903d7_1 ... (0s)
Current status: DONE
BigQuery error in load operation: Error processing job
'myproject:bqjob_r5268069f5f49c9bf_0000018632e903d7_1': Error while reading
data, error message: Error detected while parsing row starting at position: 1405.
Error: Data between close quote character (") and field separator.
File: gs://my-bucket/mytable.csv
Failure details:
- gs://my-bucket/mytable.csv: Error while reading data,
error message: Error detected while parsing row starting at
position: 1405. Error: Data between close quote character (") and
field separator. File: gs://my-bucket/mytable.csv
- Error while reading data, error message: CSV processing encountered
too many errors, giving up. Rows: 22; errors: 1; max bad: 0; error
percent: 0
על סמך השגיאה הקודמת, יש שגיאת פורמט בקובץ.
כדי לראות את תוכן הקובץ, מריצים את הפקודה gcloud storage cat:
gcloud storage cat 1405-1505 gs://my-bucket/mytable.csv --recursive
הפלט אמור להיראות כך:
16,Abraham Lincoln,"March 4, 1861","April 15, "1865,Republican 18,Ulysses S. Grant,"March 4, 1869", ...
על סמך הפלט של הקובץ, הבעיה היא מירכאות במקום לא נכון ב-"April 15, "1865.
קבצי CSV דחוסים
קשה יותר לנפות שגיאות בניתוח של קובצי CSV דחוסים, כי היסט הבייטים שמדווח מתייחס למיקום בקובץ לא דחוס.
הפקודה gcloud storage cat הבאה מעבירה את הקובץ מ-Cloud Storage, מבצעת דקומפרסיה של הקובץ, מזהה את היסט הבייטים המתאים ומדפיסה את השורה עם שגיאת הפורמט:
gcloud storage cat gs://my-bucket/mytable.csv.gz | gunzip - | tail -c +1406 | head -n 1
הפלט אמור להיראות כך:
16,Abraham Lincoln,"March 4, 1861","April 15, "1865,Republican
פתרון בעיות שקשורות למכסות
המידע בקטע הזה יעזור לכם לפתור בעיות שקשורות למכסות או למגבלות בטעינת קובצי CSV ל-BigQuery.
אם טוענים קובץ CSV גדול באמצעות הפקודה bq load עם הדגל --allow_quoted_newlines, יכול להיות שתיתקלו בשגיאה הזו.
הודעת שגיאה
Input CSV files are not splittable and at least one of the files is larger than
the maximum allowed size. Size is: ...
רזולוציה
כדי לפתור את השגיאה שקשורה למכסת השימוש, צריך לבצע את הפעולות הבאות:
- מגדירים את הדגל
--allow_quoted_newlinesלערךfalse. - מפצלים את קובץ ה-CSV לחלקים קטנים יותר, שכל אחד מהם קטן מ-4GB.
מידע נוסף על המגבלות שחלות כשמעלים נתונים ל-BigQuery זמין במאמר בנושא עבודות טעינה.
פתרון בעיות בזיהוי אוטומטי של סכימה
כשמזהים באופן אוטומטי סכימה לקובצי CSV, יכול להיות שתיתקלו בשגיאה הבאה:
שגיאה: Error while reading data, error message: CSV processing encountered
too many errors, giving up.
השגיאה הזו יכולה להתרחש אם בקובץ ה-CSV יש שורת כותרת עם ערכי מחרוזת, ו-BigQuery לא זיהה אותה ככותרת. אפשר להשתמש באפשרות --skip_leading_rows כדי לדלג על שורת הכותרת.