将较大的 gz 压缩文件拆分为较小的压缩文件 gz

将较大的 gz 压缩文件拆分为较小的压缩文件 gz

我的要求是将 gz 文件从 gcs 加载到 BQ。我正在使用 python 和 Airflow,但它会抛出一个错误,如果单个压缩文件大小大于 5 GB,则我们无法加载它。我尝试过使用带有拆分功能的 bash 运算符,但我得到的文件没有实际文件中存在的数据。拆分文件有一些垃圾数据。我希望拆分文件也是 gz 格式。输入文件 - test.gz

gsutil cp gs://test/test.gz - | 
split -b 1G -z - /tmp/split_file_ | 
gsutil cp /tmp/split_file_* gs://testing/

我错过了什么?或者有没有更快/更有效的方法?

答案1

您正在将所有文件复制到子目录中,而不是将它们合并为一个文件。

您需要使用cat而不是cp,例如:

cat /tmp/split_file_* > gs://testing/test.gz

(由于我不知道你的环境,所以我在这里猜测。)

相关内容