ساده و سرعت بخشیدن به برنامه های Apache Spark در داده های Amazon Redshift با ادغام Amazon Redshift برای Apache Spark

ساده و سرعت بخشیدن به برنامه های Apache Spark در داده های Amazon Redshift با ادغام Amazon Redshift برای Apache Spark

گره منبع: 2597866

مشتریان استفاده می کنند آمازون Redshift تجزیه و تحلیل های حیاتی تجاری خود را بر روی پتابایت داده های ساختاریافته و نیمه ساختاریافته اجرا کنند. آپاچی اسپارک یک فریمورک محبوب است که می‌توانید از آن برای ساخت برنامه‌های کاربردی مانند ETL (استخراج، تبدیل و بارگذاری)، تجزیه و تحلیل تعاملی و یادگیری ماشین (ML) استفاده کنید. Apache Spark شما را قادر می سازد تا با دسترسی به داده های موجود در انبار داده Amazon Redshift خود، برنامه هایی را به زبان های مختلف مانند جاوا، اسکالا و پایتون بسازید.

ادغام Amazon Redshift برای Apache Spark به توسعه دهندگان کمک می کند تا به طور یکپارچه برنامه های Apache Spark را روی داده های Amazon Redshift بسازند و اجرا کنند. توسعه دهندگان می توانند از سرویس های تجزیه و تحلیل AWS و ML مانند آمازون EMR, چسب AWSو آمازون SageMaker برای ساختن بدون زحمت برنامه های Apache Spark که از انبار داده Amazon Redshift خود می خوانند و می نویسند. شما می توانید این کار را بدون به خطر انداختن عملکرد برنامه های کاربردی خود یا سازگاری تراکنش های داده های خود انجام دهید.

در این پست، ما بحث می کنیم که چرا ادغام Amazon Redshift برای Apache Spark برای تجزیه و تحلیل و ML حیاتی و کارآمد است. علاوه بر این، موارد استفاده را مورد بحث قرار می‌دهیم که از ادغام Amazon Redshift با Apache Spark برای ایجاد تأثیر تجاری استفاده می‌کنند. در نهایت، نمونه‌های گام به گام نحوه استفاده از این کانکتور رسمی AWS در یک برنامه Apache Spark را به شما آموزش می‌دهیم.

ادغام Amazon Redshift برای Apache Spark

ادغام آمازون Redshift برای Apache Spark فرآیند دست و پا گیر و اغلب دستی راه اندازی کانکتور spark-redshift را به حداقل می رساند.نسخه جامعه) و زمان لازم برای آماده شدن برای کارهای تجزیه و تحلیل و ML را کوتاه می کند. شما فقط باید اتصال به انبار داده خود را مشخص کنید و می توانید در عرض چند دقیقه کار با داده های Amazon Redshift را از برنامه های مبتنی بر Apache Spark خود شروع کنید.

می‌توانید از چندین قابلیت pushdown برای عملیات‌هایی مانند توابع مرتب‌سازی، تجمیع، محدود کردن، پیوستن و اسکالر استفاده کنید تا فقط داده‌های مربوطه از انبار داده Amazon Redshift شما به برنامه مصرف‌کننده Apache Spark منتقل شوند. این به شما امکان می دهد عملکرد برنامه های خود را بهبود بخشید. مدیران Amazon Redshift به راحتی می توانند SQL تولید شده از برنامه های مبتنی بر Spark را شناسایی کنند. در این پست، ما نشان می دهیم که چگونه می توانید SQL تولید شده توسط Apache Spark را پیدا کنید.

علاوه بر این، ادغام Amazon Redshift برای Apache Spark از فرمت فایل پارکت هنگام قرار دادن داده ها در یک فهرست موقت استفاده می کند. آمازون Redshift از دستور UNLOAD SQL برای ذخیره این داده های موقت استفاده می کند سرویس ذخیره سازی ساده آمازون (Amazon S3). برنامه Apache Spark نتایج را از دایرکتوری موقت (ذخیره شده در قالب فایل پارکت) بازیابی می کند که عملکرد را بهبود می بخشد.

شما همچنین می توانید با استفاده از برنامه های کاربردی خود به ایمن تر شدن کمک کنید هویت AWS و مدیریت دسترسی (IAM) اعتبار برای اتصال به Amazon Redshift.

ادغام Amazon Redshift برای Apache Spark در بالای کانکتور spark-redshift ساخته شده است (نسخه جامعه) و آن را برای عملکرد و امنیت افزایش می دهد و به شما کمک می کند تا عملکرد برنامه را تا 10 برابر سریعتر به دست آورید.

از موارد برای ادغام Amazon Redshift با Apache Spark استفاده کنید

برای مورد استفاده ما، رهبری شرکت مبتنی بر محصول می‌خواهد فروش هر محصول را در چندین بازار بداند. از آنجایی که فروش شرکت به صورت پویا در نوسان است، پیگیری فروش در بازارهای مختلف برای رهبری به چالشی تبدیل شده است. با این حال، فروش کلی در حال کاهش است و رهبری شرکت می‌خواهد دریابد که کدام بازارها عملکردی ندارند تا بتوانند این بازارها را برای کمپین‌های تبلیغاتی هدف قرار دهند.

برای فروش در چندین بازار، داده‌های فروش محصول مانند سفارش‌ها، تراکنش‌ها و داده‌های ارسال در Amazon S3 در دریاچه داده موجود است. تیم مهندسی داده می تواند از Apache Spark با Amazon EMR یا AWS Glue برای تجزیه و تحلیل این داده ها در Amazon S3 استفاده کند.

داده های موجودی در آمازون Redshift موجود است. به طور مشابه، تیم مهندسی داده می‌تواند این داده‌ها را با Apache Spark با استفاده از Amazon EMR یا یک کار چسب AWS با استفاده از ادغام Amazon Redshift برای Apache Spark برای انجام تجمیع‌ها و تبدیل‌ها تجزیه و تحلیل کند. مجموعه داده های جمع آوری و تبدیل شده را می توان با استفاده از ادغام Amazon Redshift برای Apache Spark در Amazon Redshift ذخیره کرد.

استفاده از یک چارچوب توزیع شده مانند Apache Spark با ادغام Amazon Redshift برای Apache Spark می تواند دید در دریاچه داده و انبار داده برای ایجاد بینش فروش فراهم کند. این بینش‌ها را می‌توان در اختیار ذینفعان تجاری و خط کاربران تجاری Amazon Redshift قرار داد تا تصمیم‌گیری آگاهانه برای اجرای تبلیغات هدفمند برای بخش‌های کم درآمد بازار بگیرند.

علاوه بر این، می‌توانیم از ادغام Amazon Redshift با Apache Spark در موارد استفاده زیر استفاده کنیم:

  • مشتری آمازون EMR یا AWS Glue که مشاغل Apache Spark را اجرا می کند، می خواهد داده ها را تبدیل کند و به عنوان بخشی از خط لوله ETL خود در Amazon Redshift بنویسد.
  • یک مشتری ML از Apache Spark با SageMaker برای مهندسی ویژگی برای دسترسی و تبدیل داده ها در Amazon Redshift استفاده می کند.
  • یک مشتری Amazon EMR، AWS Glue یا SageMaker از Apache Spark برای تجزیه و تحلیل داده های تعاملی با داده های Amazon Redshift از نوت بوک ها استفاده می کند.

نمونه هایی برای ادغام Amazon Redshift برای Apache Spark در یک برنامه Apache Spark

در این پست، مراحل اتصال Amazon Redshift از Amazon EMR را نشان می دهیم ابر محاسبه الاستیک آمازون (Amazon EC2) آمازون EMR بدون سرورو چسب AWS با استفاده از یک اسکریپت معمولی. در کد نمونه زیر، گزارشی تولید می کنیم که فروش سه ماهه سال 2008 را نشان می دهد. برای انجام این کار، با استفاده از Apache Spark DataFrame دو جدول Redshift آمازون را به هم می پیوندیم، یک pushdown محمول اجرا می کنیم، داده ها را جمع و مرتب می کنیم، و تبدیل شده را می نویسیم. داده ها به آمازون Redshift برمی گردند. این اسکریپت از PySpark استفاده می کند

اسکریپت استفاده می کند احراز هویت مبتنی بر IAM برای Amazon Redshift. نقش‌های IAM مورد استفاده توسط Amazon EMR و AWS Glue باید مجوزهای مناسب برای احراز هویت Amazon 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.

در بخش بعدی، مراحل اجرای این اسکریپت را طی می کنیم تا یک مجموعه داده نمونه را که در Amazon Redshift در دسترس است، جمع آوری کنیم.

پیش نیازها

قبل از شروع، مطمئن شوید که پیش نیازهای زیر برآورده شده است:

منابع را با استفاده از AWS CloudFormation مستقر کنید

مراحل زیر را برای استقرار پشته CloudFormation تکمیل کنید:

  1. ورود به سیستم کنسول مدیریت AWS، سپس پشته CloudFormation را راه اندازی کنید:
    BDB-2063-launch-cloudformation-stack

شما نیز می توانید قالب CloudFormation را دانلود کنید برای ایجاد منابع ذکر شده در این پست از طریق زیرساخت به عنوان کد (IaC). هنگام راه‌اندازی یک پشته جدید CloudFormation از این الگو استفاده کنید.

  1. برای انتخاب به پایین صفحه بروید من تصدیق می کنم که AWS CloudFormation ممکن است منابع IAM را ایجاد کند زیر توانمندی ها، پس از آن را انتخاب کنید پشته ایجاد کنید.

فرآیند ایجاد پشته 15 تا 20 دقیقه طول می کشد تا تکمیل شود. قالب CloudFormation منابع زیر را ایجاد می کند:

    • یک آمازون VPC با زیرشبکه های مورد نیاز، جدول مسیرها و دروازه NAT
    • یک سطل S3 با نام redshift-spark-databucket-xxxxxxx (توجه داشته باشید که xxxxxxx یک رشته تصادفی برای منحصر به فرد کردن نام سطل است)
    • یک خوشه آمازون Redshift با داده های نمونه بارگیری شده در پایگاه داده dev و کاربر اصلی redshiftmasteruser. برای هدف این پست وبلاگ، redshiftmasteruser با مجوزهای اداری استفاده می شود. با این حال، استفاده از کاربری با کنترل دسترسی ریز دانه در محیط تولید توصیه می شود.
    • یک نقش IAM برای استفاده برای Amazon Redshift با قابلیت درخواست اعتبارنامه موقت از پایگاه داده توسعه دهندگان خوشه Amazon Redshift
    • Amazon EMR Studio با نقش های مورد نیاز IAM
    • آمازون EMR نسخه 6.9.0 را در یک خوشه EC2 با نقش های مورد نیاز IAM منتشر کرد
    • یک نرم افزار بدون سرور آمازون EMR نسخه 6.9.0 منتشر شده است
    • اتصال AWS Glue و AWS Glue job نسخه 4.0
    • A دفترچه ژوپیتر برای اجرا با استفاده از آمازون EMR Studio با استفاده از آمازون 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، کانکتور با استفاده از آمازون Redshift برای Apache Spark و درایور Amazon Redshift JDBC به صورت محلی در Amazon EMR در دسترس هستند. این فایل ها در زیر قرار دارند /usr/share/aws/redshift/ فهرست راهنما. با این حال، در نسخه های قبلی آمازون EMR، انجمن نسخه از spark-redshift اتصال در دسترس است.

مثال زیر نحوه اتصال Redshift آمازون را با استفاده از هسته PySpark از طریق an نشان می دهد Amazon EMR Studio نوت بوک. پشته CloudFormation Amazon EMR Studio، Amazon EMR را روی خوشه EC2 و یک نوت بوک Jupyter در دسترس برای اجرا ایجاد کرد. برای انجام این مثال، مراحل زیر را انجام دهید:

  1. نوت بوک Jupyter را که در سطل S3 در دسترس است برای شما دانلود کنید:
    • در خروجی های پشته CloudFormation، به دنبال مقدار برای باشید EMRStudioNotebook، که باید به redshift-spark-emr.ipynb نوت بوک موجود در سطل S3.
    • پیوند را انتخاب کنید یا با کپی کردن URL مربوط به نوت بوک، پیوند را در یک برگه جدید باز کنید.
    • پس از باز کردن لینک، با انتخاب دفترچه یادداشت را دانلود کنید دانلود، که فایل را به صورت محلی در رایانه شما ذخیره می کند.
  1. با انتخاب یا کپی کردن پیوند ارائه شده در خروجی های پشته CloudFormation برای کلید، به Amazon EMR Studio دسترسی پیدا کنید. EMRStudioURL.
  2. در صفحه پیمایش، را انتخاب کنید فضای کاری.
  3. را انتخاب کنید ایجاد فضای کاری.
  4. برای مثال یک نام برای Workspace ارائه کنید redshift-spark.
  5. گسترش پیکربندی پیشرفته بخش و انتخاب کنید Workspace را به یک خوشه EMR وصل کنید.
  6. تحت به یک خوشه EMR وصل کنید، خوشه EMR را با نام انتخاب کنید emrCluster-Redshift-Spark.
  7. را انتخاب کنید ایجاد فضای کاری.
  8. پس از ایجاد فضای کاری Amazon EMR Studio و در وضعیت Attached، می توانید با انتخاب نام Workspace به Workspace دسترسی داشته باشید.

این باید Workspace را در یک تب جدید باز کند. توجه داشته باشید که اگر یک مسدود کننده پاپ آپ دارید، ممکن است مجبور شوید به Workspace اجازه دهید تا مسدود کننده پاپ آپ را باز یا غیرفعال کند.

در فضای کاری Amazon EMR Studio، ما اکنون نوت بوک Jupyter را که قبلا دانلود کرده بودیم آپلود می کنیم.

  1. را انتخاب کنید بارگذاری برای مرور سیستم فایل محلی خود و آپلود نوت بوک Jupyter (redshift-spark-emr.ipynb).
  2. را انتخاب کنید (دوبار کلیک کنید). redshift-spark-emr.ipynb نوت بوک در Workspace برای باز کردن نوت بوک.

این نوت بوک جزئیات کارهای مختلفی را که انجام می دهد ارائه می دهد. توجه داشته باشید که در بخش متغیرهایی را برای اتصال به خوشه آمازون Redshift تعریف کنید، نیازی به به روز رسانی مقادیر برای jdbc_iam_url, temp_dirو aws_role زیرا این موارد توسط AWS CloudFormation برای شما به روز می شوند. AWS CloudFormation نیز مراحل ذکر شده در را انجام داده است پیش نیازها بخش از دفترچه یادداشت

اکنون می توانید نوت بوک را شروع کنید.

  1. سلول های فردی را با انتخاب آنها و سپس انتخاب اجرا کنید بازی.

همچنین می توانید از ترکیب کلید استفاده کنید Shift + Enter or Shift+Return. یا می توانید با انتخاب تمام سلول ها را اجرا کنید اجرای همه سلول ها در دویدن منو.

  1. عملیات pushdown محمولی را که در خوشه Redshift آمازون توسط آمازون Redshift برای Apache Spark انجام شده است، بیابید.

همچنین می‌توانیم داده‌های موقت ذخیره‌شده در Amazon S3 را در قالب پارکت بهینه‌سازی شده ببینیم. خروجی را می توان از اجرای سلول در بخش مشاهده کرد آخرین درخواست اجرا شده در آمازون Redshift را دریافت کنید.

  1. برای تایید جدول ایجاد شده توسط کار از Amazon EMR در Amazon EC2، به کنسول Amazon Redshift بروید و خوشه را انتخاب کنید. redshift-spark-redshift-cluster در داشبورد خوشه های تدارک دیده شده احتمال برد مراجعه کنید.
  2. در جزئیات خوشه، در داده های پرس و جو منو ، انتخاب کنید پرس و جو در ویرایشگر پرس و جو v2.
  3. خوشه را در قسمت ناوبری انتخاب کنید و هنگامی که خوشه Redshift آمازون درخواست احراز هویت می کند، به آن متصل شوید.
  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 استفاده کنید

آمازون EMR نسخه 6.9.0 و بالاتر ادغام Redshift آمازون را برای Apache Spark JAR (مدیریت شده توسط Amazon Redshift) و Amazon Redshift JDBC JAR به صورت محلی در Amazon EMR Serverless نیز فراهم می کند. این فایل ها در زیر قرار دارند /usr/share/aws/redshift/ فهرست راهنما. در مثال زیر، ما از اسکریپت پایتون استفاده می‌کنیم که در سطل S3 توسط پشته CloudFormation که قبلا ایجاد کردیم، در دسترس قرار گرفته است.

  1. در خروجی های پشته CloudFormation، مقدار for را یادداشت کنید EMRServerlessExecutionScript، که محل اسکریپت پایتون در سطل S3 است.
  2. همچنین به مقدار برای توجه کنید EMRServerlessJobExecutionRole، که نقش IAM برای اجرای کار بدون سرور آمازون EMR است.
  3. با انتخاب یا کپی کردن پیوند ارائه شده در خروجی های پشته CloudFormation برای کلید، به Amazon EMR Studio دسترسی پیدا کنید. EMRStudioURL.
  4. را انتخاب کنید اپلیکیشن‌ها زیر بدون سرور در صفحه ناوبری

یک برنامه EMR ایجاد شده توسط پشته CloudFormation با نام پیدا خواهید کرد emr-spark-redshift.

  1. نام برنامه را برای ارسال شغل انتخاب کنید.
  2. را انتخاب کنید ارسال کار.
  3. تحت جزئیات شغل، برای نام، یک نام قابل شناسایی برای کار وارد کنید.
  4. برای نقش زمان اجرا، نقش IAM را که قبلاً از خروجی پشته CloudFormation یادداشت کردید انتخاب کنید.
  5. برای مکان اسکریپت، مسیر اسکریپت پایتون را که قبلاً از خروجی پشته CloudFormation ذکر کردید، ارائه دهید.
  6. بخش را گسترش دهید خواص جرقه و انتخاب کنید ویرایش در متن
  7. مقدار زیر را در کادر متنی وارد کنید، که مسیر را نشان می دهد redshift-connector، درایور Amazon Redshift JDBC، 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. پرس و جوهای pushdown اجرا شده برای گروه جستجوی 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

می بینید که پرس و جوی pushdown و نتایج بازگشتی در قالب فایل پارکت در آمازون S3 ذخیره می شوند.

از ادغام Amazon Redshift با Apache Spark در چسب AWS استفاده کنید

با شروع AWS Glue نسخه 4.0 و بالاتر، کارهای Apache Spark که به Amazon Redshift متصل می شوند می توانند از ادغام Amazon Redshift برای Apache Spark و Amazon Redshift JDBC درایور استفاده کنند. کارهای AWS Glue موجود که قبلاً از Amazon Redshift به عنوان منبع یا هدف استفاده می‌کنند، می‌توانند برای استفاده از این رابط جدید به AWS Glue 4.0 ارتقا داده شوند. الگوی CloudFormation ارائه شده با این پست، منابع AWS Glue زیر را ایجاد می کند:

  • اتصال چسب AWS برای Amazon Redshift - اتصال برای ایجاد اتصال از چسب AWS به Amazon Redshift با استفاده از ادغام Amazon Redshift برای Apache Spark
  • نقش IAM متصل به کار چسب AWS - نقش IAM برای مدیریت مجوزها برای اجرای کار چسب AWS
  • کار چسب AWS – اسکریپت کار AWS Glue که با استفاده از ادغام Amazon Redshift برای Apache Spark، تبدیل‌ها و ادغام‌ها را انجام می‌دهد.

مثال زیر از اتصال AWS Glue متصل به کار چسب AWS با PySpark استفاده می کند و شامل مراحل زیر است:

  1. در کنسول AWS Glue، را انتخاب کنید اتصالات در صفحه ناوبری
  2. تحت اتصالات، اتصال AWS Glue را برای Amazon Redshift ایجاد شده توسط الگوی CloudFormation انتخاب کنید.
  3. جزئیات اتصال را بررسی کنید.

اکنون می توانید از این اتصال در یک کار یا در چندین کار استفاده مجدد کنید.

  1. بر اتصالات در صفحه، کار چسب AWS ایجاد شده توسط پشته CloudFormation را در زیر انتخاب کنید مشاغل شما، یا با استفاده از URL ارائه شده برای کلید به کار چسب AWS دسترسی پیدا کنید GlueJob در خروجی پشته CloudFormation.
  2. به اسکریپت مربوط به کار چسب AWS دسترسی پیدا کرده و تأیید کنید.
  3. بر جزئیات شغل برگه، مطمئن شوید که نسخه چسب تنظیم شده است چسب 4.0.

این تضمین می کند که کار از جدیدترین ها استفاده می کند redshift-spark اتصال

  1. گسترش خواص پیشرفته و در اتصالات بخش، بررسی کنید که اتصال ایجاد شده توسط پشته CloudFormation متصل است.
  2. پارامترهای شغلی اضافه شده برای کار چسب AWS را بررسی کنید. این مقادیر در خروجی پشته CloudFormation نیز موجود هستند.
  3. را انتخاب کنید ذخیره و پس از آن دویدن.

می‌توانید وضعیت کار اجرا شده را مشاهده کنید دویدن تب.

  1. پس از اتمام موفقیت آمیز کار، می توانید خروجی چسب تست جدول ایجاد شده توسط کار چسب AWS را تأیید کنید.
  2. ما پرس و جوهای pushdown را برای گروه جستجوی 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 رابط (نسخه انجمن)، ارتقاء آنها را برای استفاده از ادغام Redshift آمازون برای Apache Spark در نظر بگیرید
  • ادغام آمازون Redshift برای Apache Spark به طور خودکار برای بهینه سازی عملکرد، محموله و پرس و جو را اعمال می کند. توصیه می کنیم از توابع پشتیبانی شده استفاده کنید (autopushdown) در درخواست شما. ادغام Amazon Redshift برای Apache Spark تابع را به یک پرس و جوی SQL تبدیل می کند و پرس و جو را در Amazon Redshift اجرا می کند. این بهینه سازی منجر به بازیابی داده های مورد نیاز می شود، بنابراین Apache Spark می تواند داده های کمتری را پردازش کند و عملکرد بهتری داشته باشد.
    • استفاده از توابع جمع‌آوری فشار پایین را در نظر بگیرید avg, count, max, minو sum برای بازیابی داده های فیلتر شده برای پردازش داده ها.
    • استفاده از عملگرهای Boolean pushdown را در نظر بگیرید in, isnull, isnotnull, contains, endswithو startswith برای بازیابی داده های فیلتر شده برای پردازش داده ها.
    • استفاده از عملگرهای فشار پایین منطقی مانند را در نظر بگیرید and, orو not (و یا !) برای بازیابی داده های فیلتر شده برای پردازش داده ها.
  • توصیه می شود با استفاده از پارامتر یک نقش IAM را منتقل کنید aws_iam_role برای احراز هویت Redshift Amazon از برنامه Apache Spark شما در Amazon EMR یا AWS Glue. نقش IAM باید مجوزهای لازم را برای بازیابی اعتبارنامه های موقت IAM برای احراز هویت به Amazon Redshift داشته باشد، همانطور که در بخش "نمونه هایی برای ادغام Amazon Redshift برای Apache Spark در برنامه Apache Spark" این وبلاگ نشان داده شده است.
  • با استفاده از این ویژگی، لازم نیست نام کاربری و رمز عبور Amazon Redshift خود را در مدیر مخفی و پایگاه داده Amazon Redshift حفظ کنید.
  • Amazon Redshift از دستور UNLOAD SQL برای ذخیره این داده های موقت در Amazon S3 استفاده می کند. برنامه Apache Spark نتایج را از دایرکتوری موقت (ذخیره شده در قالب فایل پارکت) بازیابی می کند. این دایرکتوری موقت در Amazon S3 به طور خودکار پاک نمی شود و بنابراین می تواند هزینه اضافی اضافه کند. توصیه می کنیم استفاده کنید سیاست های چرخه حیات آمازون S3 برای تعریف قوانین نگهداری برای سطل S3.
  • توصیه می شود روشن شود ثبت حسابرسی آمازون Redshift برای ثبت اطلاعات مربوط به اتصالات و فعالیت های کاربر در پایگاه داده خود.
  • توصیه می شود روشن شود رمزگذاری آمازون Redshift در حالت استراحت برای رمزگذاری داده های خود همانطور که Amazon Redshift آنها را در مراکز داده خود می نویسد و هنگام دسترسی به آنها برای شما رمزگشایی می کند.
  • توصیه می شود برای استفاده از ادغام Amazon Redshift برای Apache Spark که خارج از جعبه موجود است، به AWS Glue نسخه 4.0 و بالاتر ارتقا دهید. ارتقاء به این نسخه از چسب AWS به طور خودکار از این ویژگی استفاده می کند.
  • برای استفاده از ادغام Amazon Redshift برای Apache Spark، توصیه می شود به Amazon EMR v6.9.0 و بالاتر ارتقا دهید. شما مجبور نیستید هیچ درایور یا فایل JAR را به صراحت مدیریت کنید.
  • استفاده از نوت‌بوک‌های Amazon EMR Studio را برای تعامل با داده‌های Amazon Redshift در برنامه Apache Spark خود در نظر بگیرید.
  • استفاده از AWS Glue Studio را برای ایجاد کارهای Apache Spark با استفاده از یک رابط بصری در نظر بگیرید. همچنین می توانید به نوشتن کد Apache Spark در Scala یا PySpark در AWS Glue Studio تغییر دهید.

پاک کردن

مراحل زیر را برای پاکسازی منابعی که به عنوان بخشی از الگوی CloudFormation ایجاد شده‌اند، انجام دهید تا مطمئن شوید که در صورت عدم استفاده از منابع، صورت‌حساب دریافت نمی‌کنید:

  1. برنامه بدون سرور آمازون EMR را متوقف کنید:
    • با انتخاب یا کپی کردن پیوند ارائه شده در خروجی های پشته CloudFormation برای کلید، به Amazon EMR Studio دسترسی پیدا کنید. EMRStudioURL.
    • را انتخاب کنید اپلیکیشن‌ها زیر بدون سرور در صفحه ناوبری

یک برنامه EMR ایجاد شده توسط پشته CloudFormation با نام پیدا خواهید کرد emr-spark-redshift.

    • اگر وضعیت برنامه به صورت متوقف شده نشان داده شود، می توانید به مراحل بعدی بروید. با این حال، اگر وضعیت برنامه شروع شده است، نام برنامه را انتخاب کنید، سپس انتخاب کنید برنامه را متوقف کنید و برنامه را متوقف کنید دوباره تایید کنید
  1. فضای کاری Amazon EMR Studio را حذف کنید:
    • با انتخاب یا کپی کردن پیوند ارائه شده در خروجی های پشته CloudFormation برای کلید، به Amazon EMR Studio دسترسی پیدا کنید. EMRStudioURL.
    • را انتخاب کنید فضای کاری در صفحه ناوبری
    • فضای کاری که ایجاد کردید را انتخاب کنید و انتخاب کنید حذف، پس از آن را انتخاب کنید حذف دوباره تایید کنید
  2. پشته CloudFormation را حذف کنید:
    • در کنسول AWS CloudFormation، به پشته ای که قبلا ایجاد کرده اید بروید.
    • نام پشته را انتخاب کنید و سپس انتخاب کنید حذف برای حذف پشته و حذف منابع ایجاد شده به عنوان بخشی از این پست.
    • در صفحه تأیید، را انتخاب کنید پشته را حذف کنید.

نتیجه

در این پست، توضیح دادیم که چگونه می‌توانید از ادغام Amazon Redshift برای Apache Spark برای ساخت و استقرار برنامه‌ها با Amazon EMR در Amazon EC2، Amazon EMR Serverless و AWS Glue استفاده کنید تا به‌طور خودکار فشار down predicate و query را اعمال کنید تا عملکرد پرس و جو را برای داده‌ها بهینه کنید. در آمازون Redshift. برای اتصال بی‌وقفه و ایمن به Amazon Redshift از Amazon EMR یا AWS Glue، استفاده از ادغام Amazon Redshift برای Apache Spark بسیار توصیه می‌شود.

در اینجا چیزی است که برخی از مشتریان ما در مورد ادغام Amazon Redshift برای Apache Spark می گویند:

ما به مهندسان خود قدرت می دهیم تا خطوط لوله داده و برنامه های کاربردی خود را با استفاده از پایتون و اسکالا با آپاچی اسپارک بسازند. ما یک راه‌حل مناسب می‌خواستیم که عملیات را ساده‌تر کند و سریع‌تر و کارآمدتر برای مشتریانمان ارائه کند، و این همان چیزی است که با ادغام جدید Amazon Redshift برای Apache Spark به دست می‌آوریم.

- مشاوره هورون

«GE Aerospace از تجزیه و تحلیل AWS و Amazon Redshift برای فعال کردن بینش‌های تجاری حیاتی که تصمیمات تجاری مهم را هدایت می‌کنند، استفاده می‌کند. با پشتیبانی از کپی خودکار از Amazon S3، می‌توانیم خطوط لوله داده ساده‌تری برای انتقال داده‌ها از Amazon S3 به Amazon Redshift ایجاد کنیم. این کار توانایی تیم های محصول داده ما را برای دسترسی به داده ها و ارائه اطلاعات بینش به کاربران نهایی تسریع می کند. ما زمان بیشتری را برای افزودن ارزش از طریق داده ها و زمان کمتری را برای ادغام صرف می کنیم.

- GE Aerospace

تمرکز ما بر ارائه دسترسی سلف سرویس به داده ها برای همه کاربرانمان در گلدمن ساکس است. از طریق Legend، پلتفرم مدیریت و مدیریت داده منبع باز ما، کاربران را قادر می‌سازیم تا برنامه‌های کاربردی داده محور را توسعه دهند و بینش‌های مبتنی بر داده را در حین همکاری در صنعت خدمات مالی استخراج کنند. با ادغام Amazon Redshift برای Apache Spark، تیم پلتفرم داده ما می‌تواند با حداقل مراحل دستی به داده‌های Amazon Redshift دسترسی پیدا کند، و امکان ETL صفر کد را فراهم می‌کند که توانایی ما را افزایش می‌دهد تا تمرکز مهندسان بر تکمیل گردش کار خود را آسان‌تر کند. آنها اطلاعات کامل و به موقع را جمع آوری می کنند. ما انتظار داریم که شاهد بهبود عملکرد برنامه ها و بهبود امنیت باشیم زیرا کاربران ما اکنون می توانند به راحتی به آخرین داده ها در Amazon Redshift دسترسی داشته باشند.

-گلدمن ساکس


درباره نویسنده

گاگان براهمی یک معمار متخصص ارشد راه حل است که بر روی تجزیه و تحلیل داده های بزرگ و پلت فرم AI/ML در خدمات وب آمازون تمرکز دارد. گاگان بیش از 18 سال تجربه در زمینه فناوری اطلاعات دارد. او به مشتریان کمک می کند تا راه حل های بسیار مقیاس پذیر، کارآمد و ایمن مبتنی بر ابر در AWS را معمار و بسازند. او در اوقات فراغت خود با خانواده اش وقت می گذراند و مکان های جدیدی را کشف می کند.

ویوک گوتام یک معمار داده با تخصص در دریاچه های داده در خدمات حرفه ای AWS است. او با مشتریان سازمانی کار می کند که محصولات داده، پلتفرم های تجزیه و تحلیل و راه حل هایی را در AWS ایجاد می کنند. وقتی دریاچه‌های داده را نمی‌سازد و طراحی نمی‌کند، Vivek یک علاقه‌مند به غذا است که همچنین دوست دارد مقاصد جدید سفر را کشف کند و پیاده‌گردی کند.

نارش گوتام یک رهبر تجزیه و تحلیل داده و AI/ML در AWS با 20 سال تجربه است که از کمک به مشتریان در طراحی تجزیه و تحلیل داده های بسیار در دسترس، با کارایی بالا و مقرون به صرفه و راه حل های AI/ML برای توانمندسازی مشتریان با تصمیم گیری مبتنی بر داده لذت می برد. . در اوقات فراغت از مدیتیشن و آشپزی لذت می برد.

بوکس شریفی یک مهندس توسعه نرم افزار در تیم رانندگان آمازون Redshift است که در آنجا توسعه ادغام Amazon Redshift با کانکتور Apache Spark را رهبری می کند. او بیش از 20 سال تجربه در ساخت پلتفرم های مبتنی بر داده در صنایع مختلف دارد. در اوقات فراغت از گذراندن اوقات فراغت با خانواده و موج سواری لذت می برد.

تمبر زمان:

بیشتر از داده های بزرگ AWS