Как сжать файл на облачной платформе Google из одного ведра в другое - PullRequest
1 голос
/ 27 апреля 2020

Я пытаюсь gzip файл в Google Cloud Platform.

Я не могу это сделать. Я пытаюсь много дней. Я изучил много ответов, но ни один из них не спросил это прямо.

Так что, если у меня есть файл gs: //source/data.csv 6gb

Я хочу вывод на новый bucket gs: //target/data.csv.gz 1.5gb

cp -z или -Z параметры не меняют размер файла. У нас есть одна команда лайнера, чтобы сделать то же самое.

Попытка команды: -

user@cloudshell:~ (userx)$ gsutil cp -z text/csv gs://databucket/xyzppp/test_folder/usuals_1_0_20200412084238_P.csv gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv.gz
Copying gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv [Content-Type=text/csv]...
- [1 files][ 31.7 MiB/ 31.7 MiB]
Operation completed over 1 objects/31.7 MiB.
user@cloudshell:~ (userx)$ gsutil cp -z text/gzip gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv.gz                                                                                                                              
Copying gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv [Content-Type=text/csv]...
- [1 files][ 31.7 MiB/ 31.7 MiB]
Operation completed over 1 objects/31.7 MiB.
user@cloudshell:~ (userx)$ gsutil cp -z text/plain gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P1.csv.gz                                                                                                                            
Copying gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv [Content-Type=text/csv]...
- [1 files][ 31.7 MiB/ 31.7 MiB]
Operation completed over 1 objects/31.7 MiB.
user@cloudshell:~ (userx)$ gsutil cp -z gzip gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P1.csv.gz                                                                                                                                  
Copying gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv [Content-Type=application/octet-stream]...
- [1 files][ 31.7 MiB/ 31.7 MiB]
Operation completed over 1 objects/31.7 MiB.
user@cloudshell:~ (userx)$ gsutil cp -z application/gzip gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P1.csv.gz                                                                                                                                  
Copying gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv [Content-Type=application/octet-stream]...
- [1 files][ 31.7 MiB/ 31.7 MiB]
Operation completed over 1 objects/31.7 MiB.

Ниже приведен пример , я сначала пытаюсь сжать небольшой файл перед тем, как сделать это на 18-гигабайтном файле. Мы можем заметить, что размер файла остается таким же после опции -z. где, как будто я копирую тот же файл на linux и запускаю "gzip filename", его размер становится 6 МБ.

an example for doing same with 37 mb file

1 Ответ

0 голосов
/ 29 апреля 2020

Как прокомментировал Джон и согласно документации

Поскольку параметры -z / -Z сжимают данные перед загрузкой

Вы не можете использовать флаг -Z для сжатия уже загруженных файлов.

Если вы хотите сжать файлы, уже загруженные в Google Cloud Storage, вы можете использовать шаблоны потоков данных для Bulk Compress .

Это можно сделать с помощью одной команды:

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates/latest/Bulk_Compress_GCS_Files \
    --parameters \
inputFilePattern=gs://YOUR_BUCKET_NAME/uncompressed/*.txt,\
outputDirectory=gs://YOUR_BUCKET_NAME/compressed,\
outputFailureFile=gs://YOUR_BUCKET_NAME/failed/failure.csv,\
compression=COMPRESSION

Или вы можете выполнить это сжатие на консоли, следуя документации, указанной выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...