是否有办法(或任何类型的黑客)从压缩文件中读取输入数据? 我的输入包含几百个文件,这些文件是用gzip压缩生成的,解压缩它们有点单调乏味。
谢谢, Genady
答案 0 :(得分:6)
Dataflow现在支持从压缩文本源读取(截至this commit)。具体来说,可以通过指定压缩类型来读取使用gzip和bzip2压缩的文件:
TextIO.Read.from(myFileName).withCompressionType(TextIO.CompressionType.GZIP)
但是,如果文件具有.gz或.bz2扩展名,则您没有执行任何操作:默认压缩类型为AUTO,它会检查文件扩展名以确定文件的正确压缩类型。这甚至适用于globs,其中glob产生的文件可能是.gz,.bz2和未压缩的混合。
答案 1 :(得分:3)
我的工作性能下降很可能是因为Dataflow将大部分文件放在同一个分区中,因此它们并没有被并行处理。您可以尝试以下方法来加快速度。
答案 2 :(得分:1)
我还发现,对于驻留在云存储中的文件,设置内容类型和内容编码似乎“正常工作”而无需解决方法。
具体 - 我跑
gsutil -m setmeta -h "Content-Encoding:gzip" -h "Content-Type:text/plain" <path>
答案 3 :(得分:1)
我刚才注意到,最新版本的SDK(v0.3.150210)现在提供了指定压缩类型的功能。我已经对它进行了测试,并且可以直接从GCS加载我的GZ文件到BQ。