You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Scala创建的Spark DataFrame转为Python环境的Pandas DataFrame?

解决方法

你的问题核心是Scala和Python在Databricks中是独立的运行环境,变量不共享,所以Scala单元格里的ViewSQLTable没法直接在Python单元格调用。给你两种可行的解决方式:

方式一:通过临时视图跨语言共享数据

  1. 在原来的Scala单元格里,把Spark DataFrame注册成临时视图:
val ViewSQLTable= spark.read.jdbc(jdbcURL, "api.meter_asset_enquiry", connectionProperties)
// 新增注册临时视图的代码
ViewSQLTable.createOrReplaceTempView("temp_meter_asset")

display(ViewSQLTable)
  1. 在Python单元格里,通过Spark SQL读取这个临时视图,再转成Pandas DataFrame:
%python
# 读取临时视图得到Spark DataFrame
spark_df = spark.sql("SELECT * FROM temp_meter_asset")
# 转成Pandas DataFrame
pandasDF = spark_df.toPandas()
print(pandasDF)

方式二:直接用Python读取JDBC数据

既然最终要在Python环境处理,也可以跳过Scala,直接用Python写JDBC读取逻辑:

%python
# 替换成你的实际连接信息
jdbcURL = "jdbc:sqlserver://你的服务器地址:1433;databaseName=你的数据库名"
connectionProperties = {
    "user": "你的用户名",
    "password": "你的密码",
    "driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver"
}

# 直接读取成Spark DataFrame,再转Pandas
spark_df = spark.read.jdbc(jdbcURL, "api.meter_asset_enquiry", connectionProperties)
pandasDF = spark_df.toPandas()
print(pandasDF)

注意事项

如果表的数据量很大,toPandas()会把全量数据拉到Driver节点,可能触发内存溢出。这种情况下建议先通过filter()或者sample()过滤/采样数据,再转成Pandas DataFrame。

内容的提问来源于stack exchange,提问作者teelove

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:18:06