咨询:通过REST API从Databricks下载数据表的最佳实践
从Databricks Unity Catalog下载表数据的最佳实践
针对你需要下载gold_test.stockholm_ferries.stockholm_ferries表数据的需求,以下是几种避开DBFS API和UC元数据API限制的实用方案,覆盖手动操作、自定义处理、自动化同步等场景:
1. Databricks SQL直接导出(快速手动操作首选)
这是最便捷的手动导出方式,支持大体积数据自动分片打包:
- 登录Databricks工作区,打开SQL编辑器
- 执行全表查询:
SELECT * FROM gold_test.stockholm_ferries.stockholm_ferries - 查询完成后,点击结果面板的Export按钮,选择CSV、JSON、Parquet等格式即可下载。数据量超过单文件上限时,系统会自动生成多文件压缩包,无1MB请求限制。
如果需要自动化导出,可结合Databricks SQL Jobs将数据导出到云对象存储(S3/ADLS/GCS),再从存储端批量下载:
-- 示例:导出CSV到S3存储桶 COPY INTO 's3://your-target-bucket/ferries-export' FROM gold_test.stockholm_ferries.stockholm_ferries FILEFORMAT = CSV OPTIONS (header = "true", delimiter = ",")
2. Notebook + Databricks CLI(自定义处理后导出)
适合需要先对数据做修改、清洗再导出的场景:
- 在Databricks中创建Notebook,读取目标表:
# Spark读取UC表 df = spark.table("gold_test.stockholm_ferries.stockholm_ferries") # 可选:添加自定义处理逻辑(比如过滤、字段转换) # df = df.filter(df.departure_time > '2024-01-01')
- 将处理后的数据保存到DBFS临时路径:
# 保存为Parquet(高效压缩格式,适合后续修改) df.write.mode("overwrite").parquet("/dbfs/tmp/ferries_export/") # 或保存为带表头的CSV df.write.mode("overwrite").option("header", "true").csv("/dbfs/tmp/ferries_export_csv/")
- 本地安装Databricks CLI并完成配置后,执行递归下载命令(无单文件大小限制):
# 下载Parquet目录到本地 databricks fs cp --recursive dbfs:/tmp/ferries_export/ /local/your-path/ # 下载CSV目录到本地 databricks fs cp --recursive dbfs:/tmp/ferries_export_csv/ /local/your-path/
3. 直接访问云存储原始文件(长期自动化同步首选)
Unity Catalog管理的表数据实际存储在云对象存储中,若你的机器有权限访问该存储桶,可直接绕过Databricks平台下载原始数据:
- 在Databricks UI中查看表详情,找到Location字段(比如
s3://gold-test-bucket/catalogs/gold_test/schemas/stockholm_ferries/tables/stockholm_ferries/) - 使用对应云服务的CLI工具批量下载:
- AWS:
aws s3 cp --recursive s3://your-table-path/ /local/your-path/ - Azure:
azcopy copy "https://your-storage-account.dfs.core.windows.net/container/path/*" "/local/your-path/" --recursive - GCP:
gsutil cp -r gs://your-bucket/path/ /local/your-path/
- AWS:
场景选择建议
- 临时手动导出少量数据:用Databricks SQL直接导出
- 需要先处理数据再导出:Notebook + Databricks CLI
- 长期定时同步大数据量:直接访问云存储原始文件
内容的提问来源于stack exchange,提问作者Lionbull
相关产品推荐
相关产品推荐

