Databricks中如何将pandas DataFrame转换为SQL表视图?
Pandas DataFrame 转Databricks SQL可下载视图实现
要实现pandas结果转SQL视图走原生下载通道的逻辑非常简单,在Python环境拿到最终的pandas DataFrame后,先转成Spark DataFrame再注册全局临时视图即可,代码如下:
# 替换final_pd_df为你自己的pandas DataFrame变量名 spark_temp_df = spark.createDataFrame(final_pd_df) # 注册全局临时视图,集群运行期间跨单元格均可访问 spark_temp_df.createOrReplaceGlobalTempView("result_for_download")
视图注册完成后,新建SQL查询单元格,执行SELECT * FROM global_temp.result_for_download,运行出结果后就可以直接用SQL结果页自带的下载按钮导出全量数据到本地。注意不要使用普通临时视图注册方法,普通临时视图仅在当前Spark会话内生效,跨单元格调用容易出现找不到表的报错。
其他本地导出数据的实用方案
- 小数据集(1万行以内)直接渲染下载:在Python单元格执行
display(你的pandas_df变量名),等结果表格渲染完成后,结果面板右上角自带下载按钮,无需转视图,操作最简便,仅不适合超大数据集(会触发结果自动截断)。 - 中等数据集直接生成下载链接:把DataFrame写到DBFS临时文件路径,直接生成浏览器可识别的下载链接,跳过复杂的DBFS文件查找步骤,代码如下:
# 把结果写入DBFS FileStore临时路径,关闭索引避免导出错位列 你的pandas_df变量名.to_csv("/dbfs/FileStore/tmp/final_export.csv", index=False, encoding="utf-8-sig") # 渲染可点击的下载按钮 displayHTML("""<a href="/files/tmp/final_export.csv" download="分析结果.csv">点击下载全量CSV结果</a>""")
运行后单元格会输出可直接点击的下载入口,点击即可触发文件下载,utf-8-sig编码可以避免本地打开CSV出现中文乱码。
- 大数据集(百万行级)导出:先把DataFrame输出为gzip压缩的CSV或者parquet格式,再走上面的链接生成逻辑,能把文件体积压缩到原来的1/5左右,避免下载超时或者中断。
内容的提问来源于stack exchange,提问作者Bebba
相关产品推荐
相关产品推荐

