amazon s3 - रेडशिफ्ट स्पेक्ट्रम: तिथि/फोल्डर द्वारा स्वचालित रूप से विभाजन तालिकाएं



amazon-s3 amazon-redshift (1)

वर्तमान में हम एक दैनिक सीएसवी निर्यात का निर्माण करते हैं जो कि हम एस 3 बाल्टी पर निम्न संरचना में अपलोड करते हैं:

<report-name>
|--reportDate-<date-stamp>
    |-- part0.csv.gz
    |-- part1.csv.gz

हम दैनिक निर्यात से विभाजित रिपोर्ट चलाने में सक्षम होना चाहते हैं।

इस पृष्ठ के अनुसार, आप डेटा को लाल साफ्ट स्पेक्ट्रम में एक कुंजी से विभाजित कर सकते हैं जो स्रोत एस 3 फ़ोल्डर पर आधारित है जहां आपका स्पेक्ट्रम तालिका इसके डेटा का स्रोत है हालांकि, उदाहरण से, ऐसा लगता है कि आपको प्रत्येक विभाजन के लिए एक ALTER स्टेटमेंट की आवश्यकता है:

alter table spectrum.sales_part
add partition(saledate='2008-01-01') 
location 's3://bucket/tickit/spectrum/sales_partition/saledate=2008-01/';

alter table spectrum.sales_part
add partition(saledate='2008-02-01') 
location 's3://awssampledbuswest2/tickit/spectrum/sales_partition/saledate=2008-02/';

क्या टेबल को सेट करने के लिए कोई तरीका है जिससे डेटा स्वचालित रूप से फ़ोल्डर से आता है, या क्या हमें उस दिन के विभाजन को जोड़ने के लिए मेज पर जाने के लिए रोजाना नौकरी की ज़रूरत है?


समाधान 1:

प्रति मेज पर 20000 अधिकतम विभाजन बन सकते हैं आप सभी भविष्य के एस 3 विभाजन फ़ोल्डरों के लिए विभाजन (अधिकतम 20k) जोड़ने के लिए एक-बार स्क्रिप्ट लिख सकते हैं।

उदाहरण के लिए

यदि फ़ोल्डर s3: // बाल्टी / टिकिट / स्पेक्ट्रम / बिक्री_विभाजन / सैलेटेड = 2017-12 / मौजूद नहीं है, तो आप उसके लिए विभाजन भी जोड़ सकते हैं।

alter table spectrum.sales_part
add partition(saledate='2017-12-01') 
location 's3://bucket/tickit/spectrum/sales_partition/saledate=2017-12/';

समाधान 2:

https://aws.amazon.com/blogs/big-data/data-lake-ingestion-automatically-partition-hive-external-tables-with-aws/

http://docs.aws.amazon.com/lambda/latest/dg/with-s3.html