Мне интересно, можно ли катавать файл gzip, хранящийся на amazon s3. Возможно, с помощью какого-то потокового клиента. Как вы думаете?
Мы выполняем операцию, аналогичную zcat s3://bucket_name/your_file | grep "log_id"
Мне интересно, можно ли катавать файл gzip, хранящийся на amazon s3. Возможно, с помощью какого-то потокового клиента. Как вы думаете?
Мы выполняем операцию, аналогичную zcat s3://bucket_name/your_file | grep "log_id"
Вы также можете использовать s3cat, часть инструментария командной строки Tim Kay для AWS:
Чтобы получить эквивалент zcat FILENAME | grep "log_id"
, вы должны:
> s3cat BUCKET/OBJECT | zcat - | grep "log_id"
От S3 REST API "Операции над объектами" GET Object:
Чтобы использовать GET, вы должны иметь READ-доступ к объекту. Если вы предоставляете доступ READ к анонимному пользователю, вы можете вернуть объект без использования заголовка авторизации.
В этом случае вы можете использовать:
$ curl <url-of-your-object> | zcat | grep "log_id"
или
$ wget -O- <url-of-your-object> | zcat | grep "log_id"
Однако, если вы не предоставили анонимный доступ READ к объекту, вам необходимо создать и отправить заголовок авторизации как часть запроса GET
, и это становится несколько утомительным с curl
/wget
, К счастью для вас, кто-то уже это сделал и что Perl aws script от Tim Kay как рекомендуется Hari. Обратите внимание, что вам не нужно ставить Tim Kay script на свой путь или иным образом устанавливать его (за исключением того, чтобы сделать его исполняемым), если вы используете версии команд, начинающиеся с aws
, например.
$ ./aws cat BUCKET/OBJECT | zcat | grep "log_id"
Не exaccty zcat, но способ использовать hadoop для загрузки больших файлов, параллельных S3, может быть 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://master: 8020/your_file
Возможно, с этого момента вы можете пропустить zcat...
Чтобы добавить свои учетные данные, вы должны отредактировать файл core-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>
Если ваша ОС поддерживает его (вероятно), вы можете использовать /dev/fd/1
для цели для aws s3 cp
:
aws s3 cp s3://bucket_name/your_file | zcat | grep log_id
Кажется, что после EOF есть некоторые байты с завершающим байтом, но zcat
и bzcat
удобно просто написать предупреждение для STDERR
.
Я только что подтвердил, что это работает, загружая некоторые отвалы DB прямо из S3 следующим образом:
aws s3 cp s3://some_bucket/some_file.sql.bz2 /dev/fd/1 | bzcat -c | mysql -uroot some_db
Все это без ничего, кроме материала, уже имеющегося на вашем компьютере, и официальных инструментов AWS CLI. Win.
Нашел эту тему сегодня, и ей понравился Кит. Ускоренный переход на сегодняшний день aws cli, сделанный с помощью:
aws s3 cp s3://some-bucket/some-file.bz2 - | bzcat -c | mysql -uroot some_db
Возможно, кому-то еще немного осталось немного времени.
Вам нужно попробовать 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