如何从本地PC向DBFS上传超出UI限制的大文件?
本地PC向DBFS上传大文件的可行方案
DBFS网页端UI上传本身有单文件大小限制(通常单文件超过2G就会上传失败),针对Yelp这类GB级的数据集,直接用下面几个经过验证的方案即可:
方案1:Databricks CLI 上传(优先推荐,支持TB级文件)
这是最稳定的大文件传输方式,自带分块上传、断点续传能力,不会因为网络波动从头重传。
- 先在本地PC安装Databricks CLI,安装完成后执行
databricks configure --token完成鉴权,按照提示填入自己的Databricks工作区地址、个人访问令牌即可 - 鉴权通过后,直接执行文件拷贝命令上传单文件:
databricks fs cp D:/local_path/yelp_academic_dataset_review.json dbfs:/datasets/yelp/ --overwrite - 如果要上传整个解压后的Yelp数据集文件夹,加
-r参数递归上传即可:databricks fs cp -r D:/local_path/yelp_dataset/ dbfs:/datasets/yelp/
*如果传输中途断网,直接重跑同一条命令,CLI会自动校验已上传的分块,跳过已完成部分,不需要重新传整个文件。
方案2:本地拆分文件后上传(适合不想额外装工具的场景)
如果不想配置CLI,可以先在本地把大文件拆成小于2G的分片,之后不管走UI还是普通方式上传都不会触发大小限制:
- Windows端可以用7-Zip的分卷压缩功能,把单个大Yelp文件拆成1G大小的分卷;Mac/Linux端直接用系统自带的split命令拆分:
split -b 1024m yelp_academic_dataset.json yelp_part_ - 把所有拆分后的分片上传到DBFS的同一个目录下,后续用Spark SQL读数据的时候直接指定目录路径即可,Spark会自动识别目录下所有分片合并读取,不需要手动合并文件,示例读取代码:
CREATE OR REPLACE TEMP VIEW yelp_review_raw USING JSON OPTIONS (path='dbfs:/datasets/yelp/parts/')
方案3:Notebook内置上传入口(适合5G以内的文件)
如果使用的是Databricks Runtime 11.3 LTS及以上版本,可以直接在Notebook里用dbutils的文件上传能力,单文件上限比网页UI高,操作路径更短,但超过10G的文件还是优先选CLI方案更稳妥。
上传完成后建议先执行
%fs ls dbfs:/datasets/yelp/查看文件大小,和本地原文件做比对,确认传输完整后再开始做Spark SQL的练习,避免因为文件损坏报解析错误。
内容的提问来源于stack exchange,提问作者f1254
相关产品推荐
相关产品推荐

