Как прочитать файл .tar.gz в GCS Bucket с помощью приложения весенней загрузки в движке Google Kubernetes - PullRequest
0 голосов
/ 07 июня 2018

У меня есть корзина GCS, куда я загружаю файлы .tar.gz.Google PUB-SUB отправляет уведомление приложению в Kubernetes Engine при каждой новой загрузке файла.Приложение имеет прослушиватель, который слушает уведомление и должен прочитать файл .tar.gz.

Я настроил тему / уведомление подписчика от GCS к приложению.Я не могу определить, как читать файл .tar.gz, когда приходит уведомление.

Я попробовал код ниже, чтобы прочитать .tar.gz, но это не то, что я должен делать.Это дало нечитаемые символы, и я не разархивирую это.Я использовал google-cloud-storage lib.

if(map.containsValue("OBJECT_FINALIZE") ){
           Storage storage = StorageOptions.newBuilder()
                    .setProjectId(projectId)
                    .setCredentials(creaCredentialsProvider.getCredentials()).build().getService();


           try(ReadChannel reader = storage.reader(archiveMessage.getBucket(), archiveMessage.getName())){
               ByteBuffer bytes = ByteBuffer.allocate(64 * 1024);
               while (reader.read(bytes) > 0) {
                   bytes.flip();
                   System.out.println((char)bytes.get());
                   bytes.clear();
               }

           }


        }

Я посмотрел на постоянные диски и перекодировку, которая не смотрит вперед.Любая помощь с направлением, я должен идти, или примеры кода очень ценятся.

1 Ответ

0 голосов
/ 15 августа 2018

Нет функции, доступной с Transcoding в Google Cloud Platform, которая может предложить двухуровневую декомпрессию, особенно с файлом tar.gz.Однако, следуя ответу, предоставленному в этой ссылке Stackoverflow , кажется, что существует программный способ обойти эту проблему.Вы бы использовали метод tarfile.TarFile.extractfile, чтобы обойти необходимость извлечения на диск

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