פשט והאיץ את יישומי Apache Spark על נתוני Amazon Redshift עם אינטגרציה של Amazon Redshift עבור Apache Spark

פשט והאיץ את יישומי Apache Spark על נתוני Amazon Redshift עם אינטגרציה של Amazon Redshift עבור Apache Spark

צומת המקור: 2597866

לקוחות משתמשים האדום של אמזון להפעיל את הניתוחים העסקיים הקריטיים שלהם על פטה-בייט של נתונים מובנים ומובנים למחצה. Apache Spark היא מסגרת פופולרית שבה אתה יכול להשתמש כדי לבנות יישומים למקרי שימוש כגון ETL (חילוץ, טרנספורמציה וטעינה), ניתוח אינטראקטיבי ולמידת מכונה (ML). Apache Spark מאפשרת לך לבנות יישומים במגוון שפות, כגון Java, Scala ו-Python, על ידי גישה לנתונים במחסן הנתונים של Amazon Redshift שלך.

אינטגרציה של Amazon Redshift עבור Apache Spark עוזרת למפתחים לבנות ולהפעיל בצורה חלקה יישומי Apache Spark על נתוני Amazon Redshift. מפתחים יכולים להשתמש ב-AWS Analytics ושירותי ML כגון אמזון EMR, דבק AWS, ו אמזון SageMaker לבנות ללא מאמץ יישומי Apache Spark שקוראים וכותבים למחסן הנתונים של Amazon Redshift שלהם. אתה יכול לעשות זאת מבלי להתפשר על הביצועים של היישומים שלך או על עקביות העסקאות של הנתונים שלך.

בפוסט זה, אנו דנים מדוע אינטגרציה של Amazon Redshift עבור Apache Spark היא קריטית ויעילה עבור ניתוח ו-ML. בנוסף, אנו דנים במקרים של שימוש המשתמשים באינטגרציה של Amazon Redshift עם Apache Spark כדי להניע השפעה עסקית. לבסוף, אנו מעבירים אותך דרך דוגמאות שלב אחר שלב כיצד להשתמש במחבר AWS רשמי זה באפליקציית Apache Spark.

אינטגרציה של אמזון Redshift עבור Apache Spark

האינטגרציה של אמזון לאדום עבור Apache Spark ממזערת את התהליך המסורבל ולעתים קרובות ידני של הקמת מחבר להסטה לאדום ניצוץ (גרסת קהילה) ומקצר את הזמן הדרוש להתכונן למשימות אנליטיקה ומשימות ML. אתה רק צריך לציין את החיבור למחסן הנתונים שלך, ותוכל להתחיל לעבוד עם נתוני אמזון Redshift מהאפליקציות שלך מבוססות Apache Spark תוך דקות.

אתה יכול להשתמש במספר יכולות דחיפה לפעולות כמו מיון, צבירה, הגבלה, הצטרפות ופונקציות סקלריות כך שרק הנתונים הרלוונטיים מועברים ממחסן הנתונים של Amazon Redshift שלך לאפליקציית Apache Spark הצורכת. זה מאפשר לך לשפר את הביצועים של היישומים שלך. מנהלי אמזון Redshift יכולים לזהות בקלות את ה-SQL שנוצר מיישומים מבוססי Spark. בפוסט זה, אנו מראים כיצד תוכל לגלות את ה-SQL שנוצר על ידי עבודת Apache Spark.

יתרה מכך, אינטגרציה של Amazon Redshift עבור Apache Spark משתמשת בפורמט קובץ Parquet בעת ביצוע הנתונים בספרייה זמנית. Amazon Redshift משתמש במשפט UNLOAD SQL כדי לאחסן את הנתונים הזמניים האלה שירות אחסון פשוט של אמזון (אמזון S3). אפליקציית Apache Spark מאחזרת את התוצאות מהספרייה הזמנית (מאוחסנת בפורמט קובץ Parquet), מה שמשפר את הביצועים.

אתה יכול גם לעזור להפוך את היישומים שלך לאבטחים יותר על ידי שימוש AWS זהות וניהול גישה (IAM) אישורים לחיבור לאמזון Redshift.

אינטגרציה של אמזון האדום עבור Apache Spark בנויה על גבי מחבר ההיסט לאדום ניצוץ (גרסת קהילה) ומשפר אותו עבור ביצועים ואבטחה, ועוזר לך להשיג ביצועי יישומים מהירים עד פי 10.

מקרי שימוש עבור אינטגרציה של Amazon Redshift עם Apache Spark

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

עבור מכירות בשווקים מרובים, נתוני מכירת המוצרים כגון הזמנות, עסקאות ונתוני משלוח זמינים באמזון S3 באגם הנתונים. צוות הנדסת הנתונים יכול להשתמש ב- Apache Spark עם Amazon EMR או AWS Glue כדי לנתח נתונים אלה ב- Amazon S3.

נתוני המלאי זמינים באמזון Redshift. באופן דומה, צוות הנדסת הנתונים יכול לנתח את הנתונים הללו עם Apache Spark באמצעות Amazon EMR או עבודת דבק של AWS על ידי שימוש באינטגרציה של Amazon Redshift עבור Apache Spark לביצוע צבירה וטרנספורמציות. ניתן לאחסן את מערך הנתונים המצטבר והמומר בחזרה לתוך Amazon Redshift באמצעות האינטגרציה של Amazon Redshift עבור Apache Spark.

שימוש במסגרת מבוזרת כמו Apache Spark עם השילוב של Amazon Redshift עבור Apache Spark יכול לספק את הנראות על פני אגם הנתונים ומחסן הנתונים כדי ליצור תובנות מכירות. תובנות אלו יכולות להיות זמינות לבעלי העניין העסקיים ולקו המשתמשים העסקיים באמזון Redshift כדי לקבל החלטות מושכלות להפעיל מבצעים ממוקדים לפלחי השוק הנמוכים בהכנסות.

בנוסף, אנו יכולים להשתמש באינטגרציה של Amazon Redshift עם Apache Spark במקרים השימוש הבאים:

  • לקוח של אמזון EMR או AWS Glue המריץ עבודות Apache Spark רוצה להפוך נתונים ולכתוב אותם לתוך Amazon Redshift כחלק מצינור ה-ETL שלהם
  • לקוח ML משתמש ב-Apache Spark עם SageMaker להנדסת תכונות לגישה והמרת נתונים באמזון Redshift
  • לקוח של אמזון EMR, AWS Glue או SageMaker משתמש ב-Apache Spark לניתוח נתונים אינטראקטיבי עם נתונים על אמזון Redshift ממחברות

דוגמאות לאינטגרציה של Amazon Redshift עבור Apache Spark באפליקציית Apache Spark

בפוסט זה, אנו מראים את השלבים לחיבור Amazon Redshift מ- Amazon EMR ענן מחשוב אלסטי של אמזון (אמזון EC2), Amazon EMR ללא שרת, ו-AWS Glue באמצעות סקריפט נפוץ. בקוד לדוגמה הבא, אנו מפיקים דוח המציג את המכירות הרבעוניות לשנת 2008. לשם כך, אנו מצטרפים לשתי טבלאות אמזון Redshift באמצעות Apache Spark DataFrame, מפעילים דחיפה של פרדיקטים, צוברים וממיינים את הנתונים, וכותבים את הטרנספורמציה נתונים חזרה לאמזון Redshift. הסקריפט משתמש ב- PySpark

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

מדיניות הדוגמה הבאה מאפשרת לתפקיד IAM לקרוא את GetClusterCredentials פעולות:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": "arn:aws:redshift:<aws_region_name>:xxxxxxxxxxxx:dbuser:*/temp_*" }
}

מדיניות הדוגמה הבאה מאפשרת גישה לדלי S3 לאחסון נתונים זמני:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": "arn:aws:s3:::<s3_bucket_name>" } ]
}

התסריט המלא הוא כדלקמן:

from pyspark.sql import SparkSession
from pyspark.sql.functions import col # Initiate Apache Spark session
spark = SparkSession .builder .appName("SparkRedshiftConnector") .enableHiveSupport() .getOrCreate() # Set connection options for Amazon Redshift
jdbc_iam_url = "jdbc:redshift:iam://redshift-spark-connector-1.xxxxxxxxxxx.<aws_region_name>.redshift.amazonaws.com:5439/sample_data_dev"
temp_dir = 's3://<s3_bucket_name>/redshift-temp-dir/'
aws_role = 'arn:aws:iam::xxxxxxxxxxxx:role/redshift-s3' # Set query group for the query. More details on Amazon Redshift WLM https://docs.aws.amazon.com/redshift/latest/dg/cm-c-executing-queries.html
queryGroup = "emr-redshift"
jdbc_iam_url_withQueryGroup = jdbc_iam_url+'?queryGroup='+queryGroup # Set User name for the query
userName = 'awsuser'
jdbc_iam_url_withUserName = jdbc_iam_url_withQueryGroup+';user='+userName # Define the Amazon Redshift context
redshiftOptions = { "url": jdbc_iam_url_withUserName, "tempdir": temp_dir, "aws_iam_role" : aws_role
} # Create the sales DataFrame from Amazon Redshift table using io.github.spark_redshift_community.spark.redshift class
sales_df = ( spark.read .format("io.github.spark_redshift_community.spark.redshift") .options(**redshiftOptions) .option("dbtable", "tickit.sales") .load()
) # Create the date Data Frame from Amazon Redshift table
date_df = ( spark.read .format("io.github.spark_redshift_community.spark.redshift") .options(**redshiftOptions) .option("dbtable", "tickit.date") .load()
) # Assign a Data Frame to the above output which will be written back to Amazon Redshift
output_df= sales_df.join(date_df, sales_df.dateid == date_df.dateid, 'inner').where( col("year") == 2008).groupBy("qtr").sum("qtysold").select( col("qtr"), col("sum(qtysold)")).sort(["qtr"], ascending=[1]).withColumnRenamed("sum(qtysold)","total_quantity_sold") # Display the output
output_df.show() ## Lets drop the queryGroup for easy validation of push down queries
# Set User name for the query
userName = 'awsuser'
jdbc_iam_url_withUserName = jdbc_iam_url+'?user='+userName # Define the Amazon Redshift context
redshiftWriteOptions = { "url": jdbc_iam_url_withUserName, "tempdir": temp_dir, "aws_iam_role" : aws_role
} # Write the Data Frame back to Amazon Redshift
output_df.write .format("io.github.spark_redshift_community.spark.redshift") .mode("overwrite") .options(**redshiftWriteOptions) .option("dbtable", "tickit.test") .save()

אם אתה מתכנן להשתמש בסקריפט הקודם בסביבה שלך, הקפד להחליף את הערכים של המשתנים הבאים בערכים המתאימים לסביבה שלך: jdbc_iam_url, temp_dir, ו aws_role.

בסעיף הבא, נעבור על השלבים להפעלת סקריפט זה כדי לצבור מערך נתונים לדוגמה שזמין באמזון Redshift.

תנאים מוקדמים

לפני שנתחיל, ודא שהדרישות המוקדמות הבאות מתקיימות:

פרוס משאבים באמצעות AWS CloudFormation

השלם את השלבים הבאים כדי לפרוס את מחסנית CloudFormation:

  1. היכנס ל- קונסולת הניהול של AWS, ולאחר מכן הפעל את ערימת CloudFormation:
    BDB-2063-launch-cloudformation-stack

אתה יכול גם הורד את תבנית CloudFormation ליצור את המשאבים המוזכרים בפוסט זה באמצעות תשתית כקוד (IaC). השתמש בתבנית זו בעת השקת ערימת CloudFormation חדשה.

  1. גלול מטה לתחתית העמוד כדי לבחור אני מאשר ש- AWS CloudFormation עשוי ליצור משאבי IAM תחת יכולות, ואז לבחור צור ערימה.

תהליך יצירת הערימה נמשך 15-20 דקות. תבנית CloudFormation יוצרת את המשאבים הבאים:

    • Amazon VPC עם רשתות המשנה הנדרשות, טבלאות מסלולים ושער NAT
    • דלי S3 עם השם redshift-spark-databucket-xxxxxxx (שים לב ש-xxxxxxx היא מחרוזת אקראית כדי להפוך את שם הדלי לייחודי)
    • אשכול האדום של אמזון עם נתונים לדוגמה נטענים בתוך מסד הנתונים dev והמשתמש הראשי redshiftmasteruser. לצורך הפוסט בבלוג הזה, redshiftmasteruser עם הרשאות מנהליות נעשה שימוש. עם זאת, מומלץ להשתמש במשתמש עם בקרת גישה עדינה בסביבת הייצור.
    • תפקיד IAM שישמש עבור Amazon Redshift עם יכולת לבקש אישורים זמניים ממסד הנתונים המפתחים של אשכול Redshift של Amazon
    • סטודיו EMR של אמזון עם תפקידי IAM הדרושים
    • אמזון EMR גרסה 6.9.0 על אשכול EC2 עם תפקידי IAM הדרושים
    • גרסה 6.9.0 של אפליקציית Amazon EMR Serverless
    • חיבור AWS Glue ו-AWS Glue Job גרסה 4.0
    • A מחברת צדק להפעיל באמצעות Amazon EMR Studio באמצעות Amazon EMR על אשכול EC2
    • סקריפט PySpark להפעלה באמצעות Amazon EMR Studio ו- Amazon EMR Serverless
  1. לאחר השלמת יצירת הערימה, בחר את שם הערימה redshift-spark ונווט אל יציאות

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

בסעיפים הבאים, אנו מראים את השלבים לאינטגרציה של Amazon Redshift עבור Apache Spark מ- Amazon EMR ב- Amazon EC2, Amazon EMR Serverless ו-AWS Glue.

השתמש באינטגרציה של Amazon Redshift עם Apache Spark ב- Amazon EMR ב-EC2

החל מגרסה 6.9.0 של Amazon EMR ומעלה, המחבר המשתמש באינטגרציה של Amazon Redshift עבור Apache Spark ומנהל ההתקן של Amazon Redshift JDBC זמין באופן מקומי ב- Amazon EMR. קבצים אלה ממוקמים תחת /usr/share/aws/redshift/ מַדרִיך. עם זאת, בגרסאות הקודמות של Amazon EMR, ה קהילה גרסה של spark-redshift מחבר זמין.

הדוגמה הבאה מראה כיצד לחבר את Amazon Redshift באמצעות ליבת PySpark באמצעות an סטודיו EMR של אמזון מחברת. ערימת CloudFormation יצרה את Amazon EMR Studio, Amazon EMR על אשכול EC2 ומחברת Jupyter זמינה להפעלה. כדי לעבור על דוגמה זו, בצע את השלבים הבאים:

  1. הורד עבורך את מחברת Jupyter שזמינה בדלי S3:
    • בפלטי המחסנית של CloudFormation, חפש את הערך עבור EMRStudioNotebook, שאמור להצביע על ה redshift-spark-emr.ipynb מחברת זמינה בדלי S3.
    • בחר את הקישור או פתח את הקישור בכרטיסייה חדשה על ידי העתקת כתובת האתר של המחברת.
    • לאחר פתיחת הקישור, הורד את המחברת על ידי בחירה הורדה, אשר ישמור את הקובץ באופן מקומי במחשב שלך.
  1. גש לאמזון EMR Studio על ידי בחירה או העתקה של הקישור המסופק בפלטי המחסנית של CloudFormation עבור המפתח EMRStudioURL.
  2. בחלונית הניווט בחר סביבות עבודה.
  3. בחרו צור סביבת עבודה.
  4. ספק שם עבור סביבת העבודה, למשל redshift-spark.
  5. הרחב תצורה מתקדמת סעיף ובחר צרף סביבת עבודה לאשכול EMR.
  6. תַחַת צרף לאשכול EMR, בחר באשכול EMR ​​עם השם emrCluster-Redshift-Spark.
  7. בחרו צור סביבת עבודה.
  8. לאחר יצירת סביבת העבודה של Amazon EMR Studio ובסטטוס מצורף, תוכל לגשת לסביבת העבודה על ידי בחירת שם סביבת העבודה.

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

בסביבת העבודה של Amazon EMR Studio, אנו מעלים כעת את מחברת Jupyter שהורדנו קודם לכן.

  1. בחרו העלה כדי לעיין במערכת הקבצים המקומית שלך ולהעלות את מחברת Jupyter (redshift-spark-emr.ipynb).
  2. בחר (לחיצה כפולה) את redshift-spark-emr.ipynb מחברת בתוך סביבת העבודה כדי לפתוח את המחברת.

המחברת מספקת את הפרטים של משימות שונות שהיא מבצעת. שימו לב שבסעיף הגדר את המשתנים לחיבור לאשכול האדום של אמזון, אינך צריך לעדכן את הערכים עבור jdbc_iam_url, temp_dir, ו aws_role כי אלה מעודכנים עבורך על ידי AWS CloudFormation. AWS CloudFormation ביצעה גם את השלבים המוזכרים ב- תנאים מוקדמים החלק של המחברת.

כעת תוכל להתחיל להפעיל את המחברת.

  1. הפעל את התאים הבודדים על ידי בחירתם ולאחר מכן בחירה לְשַׂחֵק.

אתה יכול גם להשתמש בשילוב המקשים של Shift + Enter or Shift+Retur. לחלופין, אתה יכול להפעיל את כל התאים על ידי בחירה הפעל את כל התאים על הפעלה תפריט.

  1. מצא את פעולת הדחיפה הבסיסית שבוצעה באשכול האדום של אמזון על ידי השילוב של אמזון רדשיפט עבור Apache Spark.

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

  1. כדי לאמת את הטבלה שנוצרה על ידי המשרה מאמזון EMR באמזון EC2, נווט אל קונסולת Amazon Redshift ובחר את האשכול redshift-spark-redshift-cluster על לוח המחוונים של אשכולות מסופקים עמוד.
  2. בפרטי האשכול, על נתוני שאילתה בתפריט, בחר שאילתה בעורך שאילתות v2.
  3. בחר את האשכול בחלונית הניווט והתחבר לאשכול האדום של אמזון כאשר הוא מבקש אימות.
  4. בחר אישורים זמניים.
  5. בעד מסד נתונים, להיכנס dev.
  6. בעד כינוי, להיכנס redshiftmasteruser.
  7. בחרו שמור.
  8. בחלונית הניווט, הרחב את האשכול redshift-spark-redshift-cluster, הרחב את מסד הנתונים של המפתחים, הרחב tickit, ולהרחיב לוחות כדי לרשום את כל הטבלאות בתוך הסכימה tickit.

אתה צריך למצוא את הטבלה test_emr.

  1. בחר (לחץ לחיצה ימנית) בטבלה test_emr, ואז לבחור בחר טבלה כדי לשאול את הטבלה.
  2. בחרו הפעלה כדי להפעיל את הצהרת SQL.

השתמש באינטגרציה של Amazon Redshift עם Apache Spark ב- Amazon EMR Serverless

מהדורת Amazon EMR גרסה 6.9.0 ומעלה מספקת את האינטגרציה של Amazon Redshift עבור Apache Spark JARs (מנוהלים על ידי Amazon Redshift) ו- Amazon Redshift JDBC JARs באופן מקומי גם ב- Amazon EMR Serverless. קבצים אלה ממוקמים מתחת ל- /usr/share/aws/redshift/ מַדרִיך. בדוגמה הבאה, אנו משתמשים בסקריפט Python שהפך לזמין בדלי S3 על ידי מחסנית CloudFormation שיצרנו קודם לכן.

  1. בפלטי המחסנית של CloudFormation, רשום את הערך עבור EMRServerlessExecutionScript, שהוא המיקום של סקריפט Python בדלי S3.
  2. שימו לב גם לערך עבור EMRServerlessJobExecutionRole, שהוא תפקיד ה-IAM שישמש להפעלת העבודה Amazon EMR Serverless.
  3. גש לאמזון EMR Studio על ידי בחירה או העתקה של הקישור המסופק בפלטי המחסנית של CloudFormation עבור המפתח EMRStudioURL.
  4. בחרו יישומים תחת ללא שרת בחלונית הניווט.

תמצא יישום EMR שנוצר על ידי מחסנית CloudFormation עם השם emr-spark-redshift.

  1. בחר את שם הבקשה להגשת עבודה.
  2. בחרו הגישו עבודה.
  3. תַחַת פרטי עבודה, עבור שם, הזן שם מזוהה למשרה.
  4. בעד תפקיד זמן ריצה, בחר את תפקיד ה-IAM שציינת בפלט המחסנית של CloudFormation קודם לכן.
  5. בעד מיקום הסקריפט, ספק את הנתיב לסקריפט Python שציינת קודם לכן מפלט מחסנית CloudFormation.
  6. הרחב את הקטע נכסי ניצוץ ולבחור את ערוך בטקסט
  7. הזן את הערך הבא בתיבת הטקסט, המספקת את הנתיב ל- redshift-connector, מנהל התקן JDBC של Amazon Redshift, spark-avro JAR, ו minimal-json קבצי JAR:
    --jars /usr/share/aws/redshift/jdbc/RedshiftJDBC.jar,/usr/share/aws/redshift/spark-redshift/lib/spark-redshift.jar,/usr/share/aws/redshift/spark-redshift/lib/spark-avro.jar,/usr/share/aws/redshift/spark-redshift/lib/minimal-json.jar

  8. בחרו הגישו עבודה.
  9. המתן עד שהמשימה תושלם ומצב הריצה יוצג כ הַצלָחָה.
  10. נווט אל עורך השאילתות של Amazon Redshift כדי לראות אם הטבלה נוצרה בהצלחה.
  11. בדוק את שאילתות הדחיפה המופעלות עבור קבוצת השאילתות של Amazon Redshift emr-serverless-redshift. אתה יכול להריץ את הצהרת SQL הבאה נגד מסד הנתונים dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'emr-serverless-redshift' ORDER BY start_time DESC LIMIT 1

אתה יכול לראות ששאילתת הדחיפה ותוצאות ההחזרה מאוחסנות בפורמט קובץ Parquet ב-Amazon S3.

השתמש באינטגרציה של Amazon Redshift עם Apache Spark ב-AWS Glue

החל מ-AWS Glue גרסה 4.0 ומעלה, עבודות Apache Spark המתחברות לאמזון Redshift יכולות להשתמש באינטגרציה של Amazon Redshift עבור Apache Spark ומנהל ההתקן של Amazon Redshift JDBC. ניתן לשדרג עבודות AWS Glue קיימות שכבר משתמשות ב- Amazon Redshift כמקור או יעד ל-AWS Glue 4.0 כדי לנצל את המחבר החדש הזה. תבנית CloudFormation המסופקת עם פוסט זה יוצרת את משאבי ה-AWS Glue הבאים:

  • חיבור דבק AWS עבור אמזון לאדום - החיבור ליצירת חיבור מ-AWS Glue ל-Amazon Redshift באמצעות האינטגרציה של Amazon Redshift עבור Apache Spark
  • תפקיד IAM מצורף לעבודת הדבק של AWS - תפקיד IAM לניהול הרשאות להפעלת עבודת הדבק של AWS
  • עבודת דבק של AWS - הסקריפט לעבודת ה- AWS Glue מבצעת טרנספורמציות וצבירה באמצעות האינטגרציה של Amazon Redshift עבור Apache Spark

הדוגמה הבאה משתמשת בחיבור AWS Glue המחובר לעבודת AWS Glue עם PySpark וכוללת את השלבים הבאים:

  1. במסוף הדבק של AWS בחר חיבורי בחלונית הניווט.
  2. תַחַת חיבורי, בחר בחיבור AWS Glue עבור Amazon Redshift שנוצר על ידי תבנית CloudFormation.
  3. אמת את פרטי החיבור.

כעת תוכל לעשות שימוש חוזר בחיבור זה בתוך עבודה או על פני מספר עבודות.

  1. על מחברים עמוד, בחר את עבודת הדבק של AWS שנוצרה על ידי מחסנית CloudFormation תחת העבודות שלך, או גש לעבודת הדבק של AWS באמצעות כתובת האתר שסופקה עבור המפתח GlueJob בפלט מחסנית CloudFormation.
  2. גישה ואמת את הסקריפט עבור עבודת הדבק של AWS.
  3. על פרטי עבודה לשונית, ודא ש גרסת דבק מוגדר דבק 4.0.

זה מבטיח שהעבודה משתמשת בגרסה העדכנית ביותר redshift-spark מחבר.

  1. לְהַרְחִיב מאפיינים מתקדמים וב חיבורי סעיף, ודא שהחיבור שנוצר על ידי מחסנית CloudFormation מצורף.
  2. ודא את פרמטרי העבודה שנוספו עבור עבודת הדבק של AWS. ערכים אלה זמינים גם בפלט עבור מחסנית CloudFormation.
  3. בחרו שמור ולאחר מכן הפעלה.

אתה יכול להציג את הסטטוס של הפעלת העבודה ב- הפעלה TAB.

  1. לאחר שהפעלת העבודה תסתיים בהצלחה, תוכל לאמת את הפלט של דבק הבדיקה הטבלה שנוצר על ידי עבודת הדבק של AWS.
  2. אנו בודקים את שאילתות הדחיפה המופעלות עבור קבוצת השאילתות של Amazon Redshift glue-redshift. אתה יכול להריץ את הצהרת SQL הבאה נגד מסד הנתונים dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'glue-redshift' ORDER BY start_time DESC LIMIT 1

שיטות עבודה מומלצות

זכור את השיטות המומלצות הבאות:

  • שקול להשתמש באינטגרציה של Amazon Redshift עבור Apache Spark מ- Amazon EMR במקום להשתמש ב- redshift-spark מחבר (גרסת קהילה) עבור עבודות Apache Spark החדשות שלך.
  • אם יש לך עבודות קיימות של Apache Spark באמצעות redshift-spark מחבר (גרסת קהילה), שקול לשדרג אותם לשימוש באינטגרציה של Amazon Redshift עבור Apache Spark
  • האינטגרציה של Amazon Redshift עבור Apache Spark מפעילה אוטומטית פרדיקטים ודחיפה של שאילתה כדי לייעל את הביצועים. אנו ממליצים להשתמש בפונקציות נתמכות (autopushdown) בשאילתה שלך. האינטגרציה של Amazon Redshift עבור Apache Spark תהפוך את הפונקציה לשאילתת SQL ותפעיל את השאילתה באמזון Redshift. אופטימיזציה זו מביאה לאחזור נתונים נדרשים, כך ש-Apache Spark יכול לעבד פחות נתונים ולקבל ביצועים טובים יותר.
    • שקול להשתמש בפונקציות דחיפה מצטברות כמו avg, count, max, min, ו sum כדי לאחזר נתונים מסוננים לעיבוד נתונים.
    • שקול להשתמש באופרטורים של דחיפה בוליאנית כמו in, isnull, isnotnull, contains, endswith, ו startswith כדי לאחזר נתונים מסוננים לעיבוד נתונים.
    • שקול להשתמש באופרטורים לוגיים של דחיפה כמו and, or, ו not (אוֹ !) כדי לאחזר נתונים מסוננים לעיבוד נתונים.
  • מומלץ לעבור תפקיד IAM באמצעות הפרמטר aws_iam_role עבור האימות של Amazon Shift מאפליקציית Apache Spark שלך ב- Amazon EMR או AWS Glue. לתפקיד IAM צריכות להיות הרשאות הכרחיות כדי לאחזר אישורי IAM זמניים לאימות לאמזון Redshift כפי שמוצג בקטע "דוגמאות לאינטגרציה של Amazon Redshift עבור Apache Spark ביישום Apache Spark" של בלוג זה.
  • עם תכונה זו, אינך צריך לשמור על שם המשתמש והסיסמה של Amazon Redshift שלך במנהל הסודות ובבסיס הנתונים של Amazon Redshift.
  • Amazon Redshift משתמש במשפט UNLOAD SQL כדי לאחסן את הנתונים הזמניים האלה ב-Amazon S3. אפליקציית Apache Spark מאחזרת את התוצאות מהספרייה הזמנית (מאוחסנת בפורמט קובץ Parquet). ספרייה זמנית זו ב-Amazon S3 אינה מנוקה באופן אוטומטי, ולכן עשויה להוסיף עלות נוספת. אנו ממליצים להשתמש מדיניות מחזור החיים של אמזון S3 כדי להגדיר את כללי השמירה עבור דלי S3.
  • מומלץ להפעיל רישום ביקורת של Amazon Redshift כדי לרשום את המידע על חיבורים ופעילויות משתמשים במסד הנתונים שלך.
  • מומלץ להפעיל הצפנה של Amazon Shift במנוחה להצפין את הנתונים שלך כפי שאמזון Redshift כותבת אותם במרכזי הנתונים שלה ולפענח אותם עבורך כאשר אתה ניגש אליהם.
  • מומלץ לשדרג ל-AWS Glue v4.0 ומעלה כדי להשתמש באינטגרציה של Amazon Redshift עבור Apache Spark, הזמינה מהקופסה. שדרוג לגרסה זו של AWS Glue יעשה שימוש אוטומטי בתכונה זו.
  • מומלץ לשדרג לאמזון EMR v6.9.0 ומעלה כדי להשתמש באינטגרציה של Amazon Redshift עבור Apache Spark. אינך צריך לנהל מנהלי התקנים או קבצי JAR במפורש.
  • שקול להשתמש במחברות של Amazon EMR Studio כדי ליצור אינטראקציה עם נתוני Amazon Redshift שלך באפליקציית Apache Spark שלך.
  • שקול להשתמש ב-AWS Glue Studio כדי ליצור עבודות Apache Spark באמצעות ממשק ויזואלי. אתה יכול גם לעבור לכתיבת קוד Apache Spark ב- Scala או PySpark בתוך AWS Glue Studio.

לנקות את

השלם את השלבים הבאים כדי לנקות את המשאבים שנוצרו כחלק מתבנית CloudFormation כדי להבטיח שלא תחויב עבור המשאבים אם לא תשתמש בהם עוד:

  1. עצור את אפליקציית Amazon EMR Serverless:
    • גש לאמזון EMR Studio על ידי בחירה או העתקה של הקישור המסופק בפלטי המחסנית של CloudFormation עבור המפתח EMRStudioURL.
    • בחרו יישומים תחת ללא שרת בחלונית הניווט.

תמצא יישום EMR שנוצר על ידי מחסנית CloudFormation עם השם emr-spark-redshift.

    • אם סטטוס האפליקציה מופיע כ- Stopped, תוכל לעבור לשלבים הבאים. עם זאת, אם סטטוס היישום הוא Started, בחר את שם היישום ולאחר מכן בחר עצור את היישום ו עצור את היישום שוב כדי לאשר.
  1. מחק את סביבת העבודה של Amazon EMR Studio:
    • גש לאמזון EMR Studio על ידי בחירה או העתקה של הקישור המסופק בפלטי המחסנית של CloudFormation עבור המפתח EMRStudioURL.
    • בחרו סביבות עבודה בחלונית הניווט.
    • בחר את סביבת העבודה שיצרת ובחר מחק, ואז לבחור מחק שוב כדי לאשר.
  2. מחק את ערימת CloudFormation:
    • במסוף AWS CloudFormation, נווט אל המחסנית שיצרת קודם לכן.
    • בחר את שם המחסנית ולאחר מכן בחר מחק כדי להסיר את המחסנית ולמחוק את המשאבים שנוצרו כחלק מפוסט זה.
    • במסך האישור, בחר מחק ערימה.

סיכום

בפוסט זה, הסברנו כיצד ניתן להשתמש באינטגרציה של Amazon Redshift עבור Apache Spark כדי לבנות ולפרוס יישומים עם Amazon EMR ב-Amazon EC2, Amazon EMR Serverless ו-AWS Glue כדי להחיל אוטומטית פרדיקטים ודחיפה של שאילתה כדי לייעל את ביצועי השאילתה עבור נתונים באמזון לאדום. מומלץ מאוד להשתמש באינטגרציה של Amazon Redshift עבור Apache Spark לחיבור חלק ומאובטח לאמזון Redshift מה-Amazon EMR או AWS Glue.

הנה מה שיש לחלק מהלקוחות שלנו לומר על האינטגרציה של Amazon Redshift עבור Apache Spark:

"אנו מעצימים את המהנדסים שלנו לבנות את צינורות הנתונים והיישומים שלהם עם Apache Spark באמצעות Python ו-Scala. רצינו פתרון מותאם שיפשט את התפעול ויספק ללקוחות שלנו בצורה מהירה ויעילה יותר, וזה מה שאנחנו מקבלים עם האינטגרציה החדשה של Amazon Redshift עבור Apache Spark”.

— יורון ייעוץ

"GE Aerospace משתמשת בניתוח AWS וב-Amazon Redshift כדי לאפשר תובנות עסקיות קריטיות המניעות החלטות עסקיות חשובות. עם התמיכה בהעתקה אוטומטית מאמזון S3, נוכל לבנות צינורות נתונים פשוטים יותר כדי להעביר נתונים מאמזון S3 לאמזון Redshift. זה מאיץ את היכולת של צוותי מוצרי הנתונים שלנו לגשת לנתונים ולספק תובנות למשתמשי הקצה. אנחנו מבלים יותר זמן בהוספת ערך באמצעות נתונים ופחות זמן באינטגרציות".

-GE Aerospace

"ההתמקדות שלנו היא במתן גישה בשירות עצמי לנתונים לכל המשתמשים שלנו בגולדמן זאקס. באמצעות Legend, פלטפורמת ניהול הנתונים והממשל שלנו בקוד פתוח, אנו מאפשרים למשתמשים לפתח יישומים ממוקדי נתונים ולהפיק תובנות מונעות נתונים תוך כדי שיתוף פעולה בתעשיית השירותים הפיננסיים. עם האינטגרציה של Amazon Redshift עבור Apache Spark, צוות פלטפורמת הנתונים שלנו יוכל לגשת לנתוני Amazon Redshift במינימום שלבים ידניים, מה שמאפשר ETL ​​אפס קוד שיגדיל את היכולת שלנו להקל על המהנדסים להתמקד בשכלול זרימת העבודה שלהם. הם אוספים מידע מלא ובזמן. אנו מצפים לראות שיפור ביצועים של יישומים ואבטחה משופרת, מכיוון שהמשתמשים שלנו יכולים כעת לגשת בקלות לנתונים העדכניים ביותר באמזון Redshift."

- גולדמן זאקס


על הכותבים

גאגן ברהמי הוא ארכיטקט פתרונות מומחה בכיר המתמקד בניתוח נתונים גדולים ופלטפורמת AI/ML בשירותי האינטרנט של אמזון. לגאגאן יש למעלה מ-18 שנות ניסיון בטכנולוגיית מידע. הוא עוזר ללקוחות לתכנן ולבנות פתרונות מבוססי ענן בעלי יכולת הרחבה, ביצועים ומאובטחים ב-AWS. בזמנו הפנוי הוא מבלה עם משפחתו וחוקר מקומות חדשים.

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

נארש גוטם היא מובילת נתונים אנליטית ו-AI/ML ב-AWS עם ניסיון של 20 שנה, שנהנה לעזור ללקוחות לתכנן פתרונות נתונים זמינים, בעלי ביצועים גבוהים וחסכוניים ביותר לניתוח נתונים ופתרונות AI/ML להעצמת לקוחות עם קבלת החלטות מונעת נתונים . בזמנו הפנוי הוא נהנה מדיטציה ובישול.

בו שרפי הוא מהנדס פיתוח תוכנה בצוות הנהגים של Amazon Redshift, שם הוא מוביל את פיתוח השילוב של Amazon Redshift עם מחבר Apache Spark. יש לו למעלה מ-20 שנות ניסיון בבניית פלטפורמות מונעות נתונים במגוון תעשיות. בזמנו הפנוי הוא נהנה לבלות עם משפחתו ולגלוש.

בול זמן:

עוד מ AWS Big Data