如何解决在Google Colab中无法上传7GB大小的Yelp Kaggle数据集文件问题
我太懂你这种大文件上传卡到天荒地老的崩溃感了!7GB的Yelp评论文件直接往Colab上传确实容易掉链子——不管是本地传还是Drive传,都容易因为文件太大、网络波动或者Colab的会话限制失败。试试下面这几个亲测有效的办法,绝对能解决你的问题:
方案1:直接用Kaggle API在Colab里下载(最推荐)
这个方法跳过了本地上传的步骤,直接让Colab从Kaggle服务器拉取数据集,速度快还稳定,是处理大数据集的首选:
- 先去你的Kaggle账号生成API密钥:
- 登录Kaggle,点击右上角头像 → 选择「Settings」
- 拉到「API」部分,点击「Create New API Token」,浏览器会自动下载一个
kaggle.json文件(很小,只有几十KB)
- 在Colab里上传这个
kaggle.json:from google.colab import files files.upload() # 上传刚才下载的kaggle.json - 配置Kaggle环境并下载数据集:
# 把kaggle.json放到正确的目录 !mkdir -p ~/.kaggle !cp kaggle.json ~/.kaggle/ !chmod 600 ~/.kaggle/kaggle.json # 设置权限,防止报错 # 直接下载Yelp数据集(不用手动解压整个压缩包) !kaggle datasets download -d yelp-dataset/yelp-dataset # 只解压你需要的review文件,节省时间和空间 !unzip -q yelp-dataset.zip yelp_academic_dataset_review.json - 之后你就可以直接读取这个文件了,记得加
lines=True(因为Yelp的JSON是每行一个数据对象的格式):import pandas as pd df = pd.read_json('yelp_academic_dataset_review.json', lines=True)
方案2:挂载Google Drive直接读取(适合已传文件到Drive的情况)
如果你已经把文件传到了Google Drive,别用files.upload(),直接挂载Drive访问更靠谱:
- 在Colab里挂载你的Google Drive:
跟着提示完成授权就行。from google.colab import drive drive.mount('/content/drive') - 直接读取Drive里的文件,把路径换成你自己的:
要是Drive上传大文件慢,建议用Google Drive桌面客户端同步,比网页上传稳定多了。import pandas as pd # 替换成你Drive里文件的实际路径 df = pd.read_json('/content/drive/MyDrive/桌面/你的数据集文件夹/yelp_academic_dataset_review.json', lines=True)
方案3:分块上传后合并(适合必须从本地传的情况)
如果一定要从本地传7GB的文件,先把它切成小块,上传后再合并:
- 本地分块:
- Windows:用PowerShell命令(比如分成1GB的块):
Get-Content yelp_academic_dataset_review.json -ReadCount 100000 | ForEach-Object { $i++; $_ | Out-File "review_part_$i.json" } - macOS/Linux:用终端的
split命令:split -b 1G yelp_academic_dataset_review.json review_part_
- Windows:用PowerShell命令(比如分成1GB的块):
- 把所有分块文件上传到Colab(每个块1GB左右,上传速度会快很多)
- 在Colab里合并分块:
合并完就可以正常读取了。!cat review_part_* > yelp_academic_dataset_review.json
额外小贴士
- Colab的免费会话一般会在12小时左右断开,要是处理大文件,建议用Colab Pro(有更长的会话时间),或者在浏览器控制台运行这段代码防止休眠:
function ClickConnect(){console.log("保持连接");document.querySelector("colab-connect-button").click()} setInterval(ClickConnect, 60000) // 每分钟点击一次连接按钮 - 读取大JSON文件时,要是内存不够,可以用
chunksize参数分块读取:chunk_iter = pd.read_json('yelp_academic_dataset_review.json', lines=True, chunksize=100000) for chunk in chunk_iter: # 处理每个chunk的数据 pass
内容的提问来源于stack exchange,提问作者Dew Man7




