无Vertex AI Workbench权限时如何合并GCP存储桶内多个CSV文件
仅拥有GCS存储桶权限时合并多份无表头CSV的可行方案
不需要申请Vertex AI Workbench权限,以下三种方式都可以完成操作,按便捷度从高到低排列:
- 本地gcloud CLI方案
适合总数据量不大(10G以内)、本地有足够剩余存储空间的场景:- 本地安装gcloud CLI工具,执行
gcloud auth login用你有权限的账号完成认证,确认账号对目标存储桶有读写权限 - 批量下载所有单特征CSV到本地临时文件夹,执行命令:
gsutil -m cp gs://[你的存储桶文件路径]/*.csv ./temp_csv/ - 按特征对应顺序整理好表头字段,先将表头写入最终合并文件:
echo "特征1名,特征2名,...,特征20名" > merged_dataset.csv - 所有无表头CSV都是单特征列、行顺序对齐的前提下,直接用系统自带的paste命令按列拼接所有文件,追加到结果文件:
paste -d ',' ./temp_csv/特征1.csv ./temp_csv/特征2.csv ... ./temp_csv/特征20.csv >> merged_dataset.csv - 抽样校验拼接结果没有错位问题后,执行
gsutil cp merged_dataset.csv gs://[你的存储桶输出路径]/把最终文件传回到存储桶即可
- 本地安装gcloud CLI工具,执行
- Cloud Shell零本地依赖方案
不想在本地装工具、或者本地存储空间不足时用,全程不需要额外权限:- 登录GCP控制台,点击右上角的
>_图标启动Cloud Shell,环境里已经预装了所有需要的gsutil、shell命令工具,自带5G免费临时存储空间 - 后续操作逻辑和本地CLI完全一致:把桶内CSV拷到Cloud Shell临时目录、写表头、按列拼接、校验后传回存储桶,全程不需要申请其他云产品的访问权限
- 登录GCP控制台,点击右上角的
- 大文件挂载方案
如果总数据量超过Cloud Shell临时存储上限,不需要全量下载文件:- 在Cloud Shell里执行
gcsfuse [你的存储桶名] ./gcs_dir,把存储桶直接挂载为本地目录,挂载后可以直接读取桶内文件,不需要提前全量拷贝 - 先把表头写入临时结果文件,再用paste命令直接读取挂载目录下的所有CSV完成拼接,输出文件先存到Cloud Shell临时目录,校验完成后传回存储桶即可,能节省大量下载时间和存储空间
- 在Cloud Shell里执行
注意事项:拼接前必须确认所有单特征CSV的行数完全一致、每行样本的顺序完全对应,否则会出现特征和样本错位的问题。如果不确定行对齐情况,可以先给每个CSV文件加行号列再拼接,拼完校验所有行号列完全一致后,再删掉行号列保留特征内容即可。
内容的提问来源于stack exchange,提问作者Rohit Dujraan
相关产品推荐
相关产品推荐

