Есть ли способ (или какой-либо хак) для чтения входных данных из сжатых файлов? Мой ввод состоит из нескольких сотен файлов, сжатых с помощью gzip, и их распаковка несколько утомительна.
Спасибо, Геннадий
Есть ли способ (или какой-либо хак) для чтения входных данных из сжатых файлов? Мой ввод состоит из нескольких сотен файлов, сжатых с помощью gzip, и их распаковка несколько утомительна.
Спасибо, Геннадий
Чтение из сжатых текстовых источников теперь поддерживается в Dataflow (начиная с этой фиксации). В частности, файлы, сжатые с помощью gzip и bzip2, можно прочитать, указав тип сжатия:
TextIO.Read.from(myFileName).withCompressionType(TextIO.CompressionType.GZIP)
Однако, если файл имеет расширение .gz или .bz2, вам не нужно ничего делать: тип сжатия по умолчанию — AUTO, который проверяет расширения файлов, чтобы определить правильный тип сжатия для файла. Это работает даже с глобусами, где файлы, полученные из глобуса, могут быть смесью .gz, .bz2 и несжатыми.
gsutil -m setmeta -h "Content-Encoding:" <path>
- person MattL; 07.02.2015
Более низкая производительность при моей работе, скорее всего, была связана с тем, что Dataflow помещал большинство файлов в один и тот же раздел, поэтому они не обрабатывались параллельно. Вы можете попробовать следующее, чтобы ускорить процесс.
Я также обнаружил, что для файлов, которые находятся в облачном хранилище, установка типа содержимого и кодировки содержимого, по-видимому, «просто работает» без необходимости обходного пути.
Конкретно - я бегу
gsutil -m setmeta -h "Content-Encoding:gzip" -h "Content-Type:text/plain" <path>
Я только что заметил, что указание типа сжатия теперь доступно в последней версии SDK (v0.3.150210). Я протестировал его и смог без проблем загрузить свои файлы GZ напрямую из GCS в BQ.