Table of Contents
מבוא ל- Spark SQL בהנדסת נתונים
מחסני נתונים הנדסיים מאחסנים כמויות עצומות של נתונים ממובנים וחצניים שנוצרו על ידי חיישנים, מערכות בקרה, ציוד ייצור וסימולציות עיצוב.שאילתות נגד מחסנים אלה כרוכות לעתים קרובות בהצטרפות רב-פעפיים, התאמות מותאמות, חישובים של זמן, ותנאים סינון מורכבים של נתונים SQL על מסדי נתונים סטנדרטיים חד-פעמיים בודדים נאבקים עם יכולת קלאבילית, בעוד פתרונות המבוססים על-ידי MapReduce דורשים קוד זדוני וזמני ביצוע מוכרים אלה, ומאפשרים באופן אוטומטי, תוך כדי שילוב של דוגמאות מורכבות של קבצי מחשוב ספארי נתונים.
מה זה Spark SQL?
Spark SQL הוא מרכיב מודולרי של Apache Spark המאפשר לשאילתת נתונים מובנים באמצעות דוחות של SQL או ב-DataFrame API. זה הוצג ב Spark 1.0 ומאז הוא התבגר למנוע חיפוש ביצועים גבוהים. Spark SQL פועל על ידי נספח ראשון של מבנה SQL לתוך תוכנית הגיונית, ולאחר מכן החל Catalyst-A אופטימיזציה - כדי ליצור תוכנית פיזית יעילה.
בניגוד למנועי SQL מסורתיים המאוחסנים נתונים בפורמטים מוכווני שורות ומבוססים על אינדקס, Spark SQL ממנפיק אחסון עמודה (למשל, פארקט), לדחוף קדימה מראש, ואופטימיזציה המבוססת על עלויות כדי להפחית את I / O ולהאיץ עיבוד של השאילתה. עבור מהנדסים עובדים עם עומסי עבודה גדולים של נתונים, זה אומר מהירות יותר ויכולת לרוץ שאילתות אד-hoc ללא שעות המתנה.
היתרונות העיקריים של Spark SQL עבור הנדסת נתונים
המונחים: Complex Queries
שאילתות הנדסיות דורשות לעתים קרובות תפרים מידע מטבלאות נפרדות: יומני ציוד, קריאות חיישן, רשומות תחזוקה, תוצאות בקרת איכות.כתיבה שאילתות כאלה במפת גלם או אפילו HiveQL יכול להיות מבולגן וטעייה -prone. Spark SQL מאפשר לך לכתוב הצהרה אחת של SQL כי מצטרף 5 או יותר טבלאות גדולות, חל על פונקציות עבור ממוצעי מתגלגל, מסננים ופילטרים על LT:0 גירסאות אוטומטיות של קידוד, במקום טבלאות לוגיות, במקום להתמקד לוגיות קטנות, במקום לוגיות, במקום לוגיות קטנות, במקום מותאמות ל-כך לוגיות.
עיבוד נתונים מהיר יותר
היתרון של Spark SQL מגיע מ מחשוב בתוך הרחם ומנוע הביצוע Tungsten.Tungsten משתמש בדור קוד כדי להפוך את מפעילי השאילתה לאופטימיזציה גבוהה של קוד, הימנעות מקריאות תפקוד וירטואלי ומינוף CPU cache. לדוגמה, שאילתה המאגדת terabytes של חיישן נתונים יכול להשלים בתוך דקות במקום שעות בהשוואה ל- Hive מסורתי על ההתקנה של MapReduce, בנוסף לשאילתות ביניים, כך ניתן להפעיל נתונים מהירים יותר.
תמיכה במספר מקורות נתונים ופורמטים
מחסני נתונים הנדסיים לעתים קרובות מקיפים נתונים ממקורות מגוונים: יומני CSV ממכשירי IoT, יצוא פארקט מתוכנה סימולציה, JSON פלט מ APIs, ו-Avro/ORC מצנרת upstreams. Spark מספק מחברים מובנה לכל הפורמטים האלה ורבים אחרים באמצעות ממשק נתונים מאוחדת של DataFrame API.You יכול להצטרף באופן חלק לשולחן של HDFS עם שולחן דואר משותף עם SQL עם , ללא צורך בנתונים אלה.
כלי BI והנדסה קיימים
צוותי הנדסה רבים משתמשים בפלטפורמות מודיעין עסקי כגון Tableau, Power BI, או Superset כדי לדמיין נתונים של מחסנים. Spark SQL חושף ממשק JDBC/ODBC (באמצעות Spark Thrift Server) שהופך אותו תואם עם כלים אלה.מהנדסים יכולים לחבר את היישום ה-BI האהוב עליהם כדי Spark SQL ולהפעיל לוחות נתונים אינטראקטיביים על פני נתונים בקנה מידה זעיר של תוכנית גישה לפתמטית, Spark משלב ישירות עם מהנדסי פיה (Spark), ו-SQL עם מהנדסי-Spark) ו-SQL.
כיצד Spark SQL Simplifis Common Engineering Data Queries
שילוב עם אופטימיזציה אוטומטית
שקול מחסן ייצור עוקב אחר ייצור, בדיקות איכות, וכיסוי ציוד (שאילתה טיפוסית עשויה לדרוש להצטרף לשולחן 1 ( מיליארדים של שורות) עם שולחן:2 שולחן (טריליון שורות) על פעמים) על לוחות זמנים ותעודות זהות של מכונות, ולאחר מכן העלאה על ידי שינוי וסוג המוצר.
Windows Functions for Time-Series Analysis
נתונים הנדסיים דורשים לעתים קרובות חישובים מתגלגלים - למשל, ממוצעים נעים של 7 ימים של קריאה ברטוטה, או ספירות מצטברות של אירועים פגומים לכל הציוד. Spark SQL תומך באופן מלא בפונקציות החלון כמו FLT 3,FLT:4, FLT:5,FLT:6 פונקציות אלה מאפשרות למהנדסים למקם מגמות ללא קידוד עצמי או תסריטים מקיפים.
SELECT sensor_id, reading_time, temperature,
temperature - LAG(temperature, 1) OVER (
PARTITION BY sensor_id ORDER BY reading_time
) AS temp_change
FROM sensor_readings;
נתונים גנובים ו- Struct Handling
מאגרי הנדסה רבים מאוחסנים בפורמטים מזוינים כמו JSON או Avro. Spark SQL יכולים לשאול שדות מכונים ישירות באמצעות ניכוי dotation או סוג הנתונים של FLT:8 לדוגמה, אם כל שורה מכילה עמודה 9 של סוג FLT 10, אתה יכול לכתוב 11FLT:11 .
In-memory Caching for Iterative Workloads
ניתוח נתונים הנדסי הוא לעתים קרובות רציונטיבי: לאחר הפעלת שאילתה כדי למצוא את האנומליות, המהנדס עשוי לרצות לקדוח לתוך תת-תחומי נתונים אלה. Spark SQL'sFLT:12 או FLT:13 על נתונים של נתונים לשמור על התוצאה בזיכרון, כך ששאילתות הבאות על אותו נתונים מופעלות כמעט מיד.
Real-World Use Cases in Engineering Data Storages
מידע על IoT Sensor
יצרנית תעשייתית גדולה אוספת 500 GB של 10 שניות קריאה מעשרות אלפי חיישנים בכל יום.מחסני הנתונים שלהם מאחסנת את הקריאות הגלומות ב-Cort מחולקות עד שנת / חודש/חודש / יום.שימוש ב- Spark SQL, מהנדסים מנהלים שאילתות כגון: "מה הטמפרטורה הממוצעת והרטט עבור כל מכונה במהלך השינוי האחרון שבו צריכת החשמל עלתה על פני 100 קילוואט?", זה כרוך בצירוף בין חיישנים, מכונה, ולוח הזמנים של , וכן הלאה, בנוסף ל-Sparks, בנוסף ל- 20 פונקציות של , בנוסף ל-Sams.
ציוד תחזוקה Logs
צי של טורבינות רוח פעולות תחזוקה, החלפת רכיבים, ואבחון בזמן אמת.המחסן משלב יומני מובנה (סוג, טיאמפ, מזהה טכנאי) עם הערות לא מובנות מאוחסנים כטקסט.התמיכה של Spark SQL לפונקציות מוגדרות למשתמש (UDFs) ב- Python או Scala מאפשר למהנדסים לחלץ מילות מפתח מהערות ולהצטרף אליהם עם אירועים מובנים.
ניתוח OUTPOEX
צוותי עיצוב מנהלים דינמיקות נוזליות חישוביות (CFD) כי תפוקה של קבצים קטנים רבים המכילים נתונים קשקשים ותוצאות מדרגים.קבצים אלה מועסקים במחסן בפורמט JSON דחוס.S Spark SQL's JSON תומך ודוחף מראש מאפשר למהנדסים לשאילתת רק את סימולציה רלוונטית ללא קריאה של כל הקבצים.הם יכולים למקם סטטיסטיקות על פני אלפי סימולציות - לדוגמה, "מצא ממוצע החיפוש אחר כך שרטוט" (S) כדי למצוא את הסימון, כלומר, כלומר, כלומר, כלומר, במקום שכמות הסימולציות של מספר אחת של הסימולציות של הסימולציות של הסימולציות של הסימולציות של הסימולציות של הגמישות, במקום שקודמתות של הגורמות ל-JSJSJSJSJSJSJSJSJSJSJSJS למעלה מקודדות של ה-D.
ההרחבה: Spark SQL vs. המסורתית Hive on MapReduce
לפני Spark SQL, צוותים הנדסיים רבים השתמשו Hive על גבי MapReduce עבור שאילתות SQL על נתוני Hadoop. בעוד Hive מציעה ממשק SQL מוכר, מודל ההוצאה להורג של MapReduce מעל פני מעלה מכתיבה תוצאות ביניים לדיסק בין כל שלב. SparkSQL שומרת נתונים בשלבים בזיכרון באמצעות קידוד ו- DAG תזמון, צמצום I/O עבור שאילתות אנליטיות הכוללות מרובות ו-Spotremecer הוא בדרך כלל יותר מהיר יותר מאשר הודעות לעיתונות.
עם זאת, Spark SQL הוא לא תחליף לירידה לכל עומסי העבודה Hive מציעה עסקאות ACID ותכונות RDBMS קפדניות (כמו מפתחות זרים) ש- Spark SQL אינה תומכת באופן מלא.עבור לוחמה בנתונים טהורה המתעוררת OLAP, Spark SQL הוא מצוין; עבור עומסי עבודה עיסקתיים, מסד נתונים יחסי מסורתי עדיין נדרש.
שילוב עם BI Tools and Workflows
ניתן לחשוף את SQL לכלים באמצעות ה-BIFLT:0 [Spark Thrift ServerFIRFIRECT 1 , אשר מיישמת את פרוטוקול HiveServer2. מהנדסים לחבר את Tableau או Power BI לשרת לוח המחוונים באמצעות נהג Hive ODBC.כלי ה-BI שולח שאילתות SQL אשר מבוצעות על ידי Spark SQL, והתוצאות מוחזרות כ-Dataset for Visualization זה מאפשר למתקנים גדולים של 5 שניות לפני הספירה לאחור, ללא מספר מחסנים, ללא מספר מחסנים, או מחסנים, עבור כל מספר מחסנים, ללא תוצאות של נתונים קצרים יותר מקבצי נתונים, ללא שימוש ב-SQreperreperating, ללא שימוש ב-Squarepert.
בזרימות עבודה מתודולוגיות, Spark SQL משלבת בצורה חלקה עם מחברות פייתון (Jupyter, Zeppelin) מהנדסים יכולים לכתוב שאילתה ספארי Spark, עוטפים אותו ב-FLT:14 DataFrame באמצעות LT:15 ולאחר מכן להאכיל את התוצאות בספריות למידת מכונה (skit-learnerlow).
אופטימיזציה של Spark SQL במחסני נתונים
חלוקת ו Bucketing
כאשר אחסון נתונים ב-Parkt או ORC, החלוקה על ידי עמודות עתיריות אשר משמשים לעתים קרובות בסעיפים (FLT:16), כגון FLT:17 או FLT 18 Spark SQL יהיה לפצח באופן אוטומטי, לדלג על מנהלים לא רלוונטיים.עבור מצטרף מפתח כמו FLT:19, לשקול דלי את השולחן למספר קבוע של דליים (למשל, 64 דליים).
השתמש ב-Cching אסטרטגית
רק הנתונים שאתה משתמש בהם פעמים רבות.לדוגמה, אם שולחן עבודה בבסיס משמש במספר שאילתות למטה, מטמון אותו לאחר קריאה. השתמש ב-FLT:20 כדי להקל על השימוש בזיכרון.
ביצוע מתאים (AQE)
Spark 3.0 הציג את AQE, אשר מחדש את תוכנית השאילתה במשרה מלאה על בסיס סטטיסטיקות ביניים.אפשר לו עם FLT:21 . AQE יכול להתמודד עם skew להצטרף, לשנות אסטרטגיות, ופחם מתפצלות באופן אוטומטי. עבור מחסני נתונים הנדסיים עם הפצה בלתי צפויה (למשל, זמן מקבצי ציוד שונים), AQE משפר באופן משמעותי ללא יציבות ידנית.
פורמטים טורפים ו-Predicate Pushdown
(הופנה מהדףה) (Parquet or ORC) ולא CSV או JSON Spark SQL קורא רק העמודות המוזכרות בשאילתה ויישם דחיפה מוקדמת לסעיפים של FLT:22.לדוגמה, שאילתה כמו FLT:23 תקרא רק את ה-FLT:24, FLT:25, ו-FLT, ו-FLT, ו-Racks, ו-Racks כל הקבוצות האלה לא תואמים את התאריך.
תגיות קשורות Shuffle Partitions
Spark SQL חדלות פירעון ל-200 מחיצות צופרות, אשר עשויות להיות נמוכות מדי עבור נתונים גדולים מאוד או גבוהות מדי עבור קטנים.כוונן באמצעות FLT:27 לערך שהוא 2-3x מספר ליבות במקבץ.עבור מחסני הנדסה עם תוספות תכופות, הגדרה משותפת היא 500-1000 מחיצות.
משאבים חיצוניים ללמידה נוספת
לצלול עמוק יותר לתוך הפנימיות של Spark SQL ואת שיטות הטובות ביותר, לשקול את המקורות הסמכותיים הבאים:
- (ב) [15] ,א"כ, "מדריך ספארי" (Spot) 1 (Swids)" (SAP) - תיעוד רשמי עם התייחסות, תצורה ודוגמאות.
- (FLT:0) הבנת ה-Catalyst Optimizer על בלוגים של Databricks BlogFLT:1 - הסבר ברור כיצד Spark SQL מייעל את שאילתות.
- (ב) ,0) למד Spark, מהדורה 2nd EditionFLT:1 - ספר המכסה את Spark, DataFrames ו- Performance tuning inפרט.
מסקנה
Spark SQL הפך אבן הפינה של מחסני נתונים הנדסיים מודרניים.It מפשט שאילתות מורכבות על ידי מתן ממשק ברמה גבוהה מפוכחת , בעוד מנוע מחשוב מבוזר של Spark מטפל בקנה מידה עצום וביצועים.מ חיישן IoT מצטרף ניתוח סימולציה סימולציה, Spark SQL מאפשר למהנדסים לשאול שאלות מתוחכמות של הנתונים שלהם ללא היאבקות עם מקבילות נמוכה או אופטימיזציה ידנית.