برنامه نویسی

توابع Step Distributed Map و Athena، مسابقه ای که در آسمان ابری ساخته شده است

Step Functions اواخر سال گذشته یک ویژگی جدید به نام نقشه توزیع شده منتشر کرد که به این سرویس اجازه می دهد تا پردازش موازی را روی مجموعه داده های عظیم (میلیون ها شیء) هماهنگ کند. اطلاعات بیشتر در مورد آن را در وبلاگ اعلام اینجا بخوانید: https://aws.amazon.com/blogs/aws/step-functions-distributed-map-a-serverless-solution-for-large-scale-parallel-data-processing/

یکی از فرمت های ورودی که می تواند برای وضعیت نقشه توزیع شده استفاده شود، a است .csv فایل در یک سطل S3. این فرصتی را برای استفاده از ادغام بهینه شده Athena برای توابع Step برای تولید ورودی باز می کند. .csv فایلی که می تواند توسط حالت نقشه توزیع شده پردازش شود.

پیکربندی

وضعیت نقشه توزیع شده برای خواندن a پیکربندی شده است .csv فایل از S3 با استفاده از ItemReader ویژگی:

  "ItemReader": {
    "Resource": "arn:aws:states:::s3:getObject",
    "ReaderConfig": {
      "InputType": "CSV",
      "CSVHeaderLocation": "FIRST_ROW"
    },
    "Parameters": {
      "Bucket.$": "$.CsvBucket",
      "Key.$": "$.CsvKey"
    }
  }
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

آتنا StartQueryExecution وظیفه برای خروجی پیکربندی شده است CsvBucket و CsvKey به دولت:

{
  "Type": "Task",
  "Resource": "arn:aws:states:::athena:startQueryExecution.sync",
  "Parameters": {
    "QueryString": "select * from mytable",
    "WorkGroup": "primary"
  },
  "ResultSelector": {
    "CsvBucket.$": "States.ArrayGetItem(States.StringSplit($.QueryExecution.ResultConfiguration.OutputLocation, ':/'), 1)",
    "CsvKey.$": "States.ArrayGetItem(States.StringSplit($.QueryExecution.ResultConfiguration.OutputLocation, ':/'), 2)"
  },
  "Next": "DistributedMapState"
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این ResultSelector پیکربندی URI S3 را می گیرد که در آن است $.QueryExecution.ResultConfiguration.OutputLocation مسیر و از توابع ذاتی برای تجزیه استفاده می کند Bucket و Key از فایل نتیجه CSV. توجه داشته باشید، این فرض می کند .csv خروجی در سطح ریشه سطل نتایج پرس و جو است.

مثال

در اینجا یک مثال ساده از آنچه با این گردش کار ممکن است آورده شده است:

حالت ماشین با نقشه توزیع شده برای کپی کردن فایل های تصویری از پرس و جوی Athena

در این ماشین حالت، ما یک کوئری Athena داریم که لیستی از URI های S3 حاوی فایل های تصویری را که می خواهیم برای پردازش بیشتر در مکانی جداگانه کپی کنیم، بازیابی می کند. ما از وضعیت نقشه توزیع شده برای پردازش این URI های S3 استفاده می کنیم و از ادغام SDK برای فراخوانی S3 CopyObject برای کپی کردن تصاویر در مکان دیگر استفاده می کنیم.

نتیجه

توابع مرحله نقشه توزیع شده، همراه با جستارهای Athena می تواند گردش کار بدون سرور هماهنگ شده را فعال کند که به ما امکان می دهد حجم عظیمی از داده را از طریق سرویس Step Functions پردازش کنیم.

درمورد من

من یک مهندس کارکنان @ Veho هستم. ما هنوز به طور فعال برای برخی از نقش های کلیدی استخدام می کنیم! اگر علاقه مند به بدون سرور هستید یا حتی به دنبال افزایش مهارت های خود هستید، نگاهی به موقعیت های باز ما بیندازید!

نوشته های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا