मुझे आश्चर्य है कि क्या अमेज़ॅन एस 3 पर संग्रहीत एक gzip फ़ाइल बिल्ली को संभव है। शायद कुछ स्ट्रीमिंग क्लाइंट का उपयोग कर। तुम क्या सोचते हो?zaz पर amazon s3
हम एक ऑपरेशन zcat s3://bucket_name/your_file | grep "log_id"
मुझे आश्चर्य है कि क्या अमेज़ॅन एस 3 पर संग्रहीत एक gzip फ़ाइल बिल्ली को संभव है। शायद कुछ स्ट्रीमिंग क्लाइंट का उपयोग कर। तुम क्या सोचते हो?zaz पर amazon s3
हम एक ऑपरेशन zcat s3://bucket_name/your_file | grep "log_id"
के समान loking हैं नहीं exaclty एक zcat, लेकिन बड़ी फ़ाइलों को डाउनलोड करने के लिए Hadoop उपयोग करने के लिए एक तरह से एस 3 से समानांतर हो सकता है http://hadoop.apache.org/common/docs/current/distcp.html
Hadoop distcp S3: // YOUR_BUCKET/your_file/tmp/your_file
या
Hadoop distcp S3: // YOUR_BUCKET/your_file HDFS: // मास्टर: 8020/your_file
इस बिंदु आप पाइप एक zcat कर सकते हैं से हो सकता है कि...
आपके क्रेडेंशियल्स को जोड़ने के लिए आप के साथ कोर-site.xml फ़ाइल को संपादित करने के लिए है:,
<configuration>
<property>
<name>fs.s3.awsAccessKeyId</name>
<value>YOUR_KEY</value>
</property>
<property>
<name>fs.s3.awsSecretAccessKey</name>
<value>YOUR_KEY</value>
</property>
<property>
<name>fs.s3n.awsAccessKeyId</name>
<value>YOUR_KEY</value>
</property>
<property>
<name>fs.s3n.awsSecretAccessKey</name>
<value>YOUR_KEY</value>
</property>
</configuration>
तुम भी s3cat इस्तेमाल कर सकते हैं टिम का हिस्सा एडब्ल्यूएस के लिए Kay के कमांड लाइन टूलकिट:
zcat FILENAME | grep "log_id"
के बराबर पाने के लिए आपको क्या करना चाहते हैं:
> s3cat BUCKET/OBJECT | zcat - | grep "log_id"
S3 REST API » Operations on Objects » GET Object से:
प्राप्त का उपयोग करने के लिए आपको वस्तु का उपयोग करने को पढ़ लिया है चाहिए। यदि आप अनाम उपयोगकर्ता को रीड एक्सेस प्रदान करते हैं, तो आप ऑब्जेक्टेशन हेडर का उपयोग किए बिना ऑब्जेक्ट वापस कर सकते हैं।
अगर ऐसी बात है, तो आप उपयोग कर सकते हैं:
$ curl <url-of-your-object> | zcat | grep "log_id"
या
$ wget -O- <url-of-your-object> | zcat | grep "log_id"
हालांकि, अगर आप वस्तु पर गुमनाम पढ़ें पहुंच प्रदान नहीं की है, तो आप बनाने की जरूरत है और GET
अनुरोध के हिस्से के रूप में प्राधिकरण शीर्षलेख भेजें और यह curl
/wget
के साथ कुछ हद तक कठिन हो जाता है। आपके लिए भाग्यशाली, किसी ने पहले से ही यह कर लिया है और यह Perl aws script by Tim Kayrecommended by Hari है। ध्यान दें कि आपको टिम के की स्क्रिप्ट को अपने पथ पर नहीं रखना है या अन्यथा इसे इंस्टॉल करना (इसे निष्पादन योग्य को छोड़कर), जब तक आप कमांड संस्करणों का उपयोग करते हैं जो aws
से शुरू होते हैं, उदाहरण के लिए।
$ ./aws cat BUCKET/OBJECT | zcat | grep "log_id"
अपने OS यह (संभावना) आप aws s3 cp
के लिए लक्ष्य के लिए /dev/fd/1
उपयोग कर सकते हैं का समर्थन करता है, तो:
aws s3 cp s3://bucket_name/your_file | zcat | grep log_id
वहाँ EOF के बाद कुछ पीछे चल बाइट्स होने लगते हैं, लेकिन zcat
और bzcat
सुविधाजनक स्थान पर सिर्फ एक लिखने STDERR
पर चेतावनी।
मैं सिर्फ पुष्टि की है कि यह कुछ डीबी लोड करके काम करता है सीधे S3 से इस तरह उदासीनता:
aws s3 cp s3://some_bucket/some_file.sql.bz2 /dev/fd/1 | bzcat -c | mysql -uroot some_db
यह सब पहले से ही अपने कंप्यूटर और सरकारी एडब्ल्यूएस CLI उपकरण पर कुछ भी नहीं लेकिन सामान के साथ। जीत।
आपको s3streamcat का उपयोग करने का प्रयास करने की आवश्यकता है, यह bzip, gzip और xz संपीड़ित फ़ाइलों का समर्थन करता है।
साथ
sudo pip install s3streamcat
प्रयोग
प्रयोग स्थापित करें:
s3streamcat s3://bucketname/dir/file_path
s3streamcat s3://bucketname/dir/file_path | more
s3streamcat s3://bucketname/dir/file_path | grep something
इस सूत्र मिला आज, और कीथ के जवाब पसंद आया। आज के aws cli के लिए तेज़ आगे यह किया गया है:
aws s3 cp s3://some-bucket/some-file.bz2 - | bzcat -c | mysql -uroot some_db
किसी और को थोड़ा सा समय बचा सकता है।