توابع 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 داریم که لیستی از URI های S3 حاوی فایل های تصویری را که می خواهیم برای پردازش بیشتر در مکانی جداگانه کپی کنیم، بازیابی می کند. ما از وضعیت نقشه توزیع شده برای پردازش این URI های S3 استفاده می کنیم و از ادغام SDK برای فراخوانی S3 CopyObject برای کپی کردن تصاویر در مکان دیگر استفاده می کنیم.
نتیجه
توابع مرحله نقشه توزیع شده، همراه با جستارهای Athena می تواند گردش کار بدون سرور هماهنگ شده را فعال کند که به ما امکان می دهد حجم عظیمی از داده را از طریق سرویس Step Functions پردازش کنیم.
درمورد من
من یک مهندس کارکنان @ Veho هستم. ما هنوز به طور فعال برای برخی از نقش های کلیدی استخدام می کنیم! اگر علاقه مند به بدون سرور هستید یا حتی به دنبال افزایش مهارت های خود هستید، نگاهی به موقعیت های باز ما بیندازید!