Как объединить файлы .csv в несколько шардов в ведре Google Cloud?

Я переместил общедоступный набор данных, доступный в виде общедоступного сегмента хранилища Google, в свой собственный сегмент. Размер файла около 10 ГБ. Когда данные перемещались, файл был разделен примерно на 47 сегментов, и все они были сжаты. Я не могу объединить их в один файл. Как их совместить?

Информация, представленная по следующей ссылке, мало помогает:

https://cloud.google.com/storage/docs/gsutil/commands/compose

У меня ведро выглядит так:

введите здесь описание изображения

Любая помощь будет оценена по достоинству.


person Kaustubh Mulay    schedule 19.12.2019    source источник
comment
В каком формате каждая из частей файла? Вы говорите, что они сжаты ... это сжато по отдельности или если все части объединены, то это один сжатый файл?   -  person Kolban    schedule 19.12.2019
comment
Какой общедоступный набор данных вы переместили в Google Cloud Storage? Какая именно команда использовалась для перемещения файлов?   -  person Daniel Ocando    schedule 19.12.2019
comment
Какой размер без сжатия? какой формат несжатый? Это добавляемый формат?   -  person guillaume blaquiere    schedule 19.12.2019
comment
@Kolban: Они в CSV. Они были сжаты при извлечении из публичного ведра Нью-Йорка.   -  person Kaustubh Mulay    schedule 22.12.2019
comment
@DanielOcando: это общедоступный набор данных NYC 311 ‹console.cloud.google.com/  -  person Kaustubh Mulay    schedule 22.12.2019
comment
@guillaumeblaquiere: это около 10,5 ГБ без сжатия. Формат - csv. Он должен быть добавляемым.   -  person Kaustubh Mulay    schedule 22.12.2019
comment
Когда вы говорите, что эта ссылка не помогает ... cloud.google.com/storage / docs / gsutil / commands / compose ... не могли бы вы уточнить ... Я думаю, это похоже на то, что вам нужно, чтобы объединить их вместе?   -  person Kolban    schedule 22.12.2019
comment
@Kolban: Это то, что мне нужно, но я захожу в тупик, потому что, когда я экспортировал файлы, они были разбиты на 47 частей, в то время как команда compose может обрабатывать максимум 32.   -  person Kaustubh Mulay    schedule 22.12.2019
comment
Как насчет объединения файлов 1-32, а затем результата этого с файлами 33-47?   -  person Kolban    schedule 22.12.2019
comment
Я пробовал это, но без физического перемещения этих файлов в другое ведро, это дало мне ошибку.   -  person Kaustubh Mulay    schedule 22.12.2019


Ответы (2)


Предлагаю вам использовать Cloud Build. Это не самое очевидное решение, но оно бессерверное и дешевое. Идеально подходит для вашего одноразового использования. вот что я предлагаю выполнить

steps:
- name: 'gcr.io/cloud-builders/gsutil'
  entrypoint: "bash"
  args: 
    - -c
    - |
       # copy all your files locally
       gsutil -m cp gs://311_nyc/311* .

       # Uncompress your file
       # I don't know your compression method? gunzip?

       # append your file in a merged file. Delete the files after the merge.
       for file in $(ls -1 311* ); do cat $file >> merged; rm $file; done

       # Copy the file to the destination bucket
       gsutil cp merged gs://myDestinationBucket/myName.csv

options:
# Use 1Tb of disk for getting all the files in the same time on the same server. 
# I didn't understand is the 10Gb is per uncompressed file or the total size. 
# If it's the total file size, I think that this option is useless
 diskSizeGb: 1000

# Optionally extend the default 10 minutes timeout if it takes too much time.
 timeout: 660s
person guillaume blaquiere    schedule 22.12.2019
comment
Спасибо @guillaume blaquire. Я попробую это. - person Kaustubh Mulay; 22.12.2019

Комбинировать с помощью nodejs

const { Storage } = require('@google-cloud/storage');
await storage.bucket(bucketName).combine(sourceFilenameList, destFilename)
person anonymus    schedule 13.03.2020