我的要求是将 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
(由于我不知道你的环境,所以我在这里猜测。)