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

如何在Azure Databricks的spark.read中直接指定SQL查询语句

直接用SELECT查询读取SQL Server数据到Spark DataFrame

不用预先创建视图,你可以直接把SELECT查询语句放到dbtable参数里——只要把查询用括号包裹并指定一个临时别名,Spark就能正确识别它作为数据源。

修改后的代码示例:

df = (spark.read 
        .format("jdbc") 
        .option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver") 
        .option("url", "jdbc:sqlserver://our connection string")     
        # 直接将查询语句作为dbtable的值,用括号包裹并添加临时别名
        .option("dbtable", "(select col1, col2 from table1) as tmp_table") 
        .option("user", user) 
        .option("password", pwd) 
        .option("encrypt", "true") 
        .option("trustServerCertificate", "true") 
        .load()
)

关键说明:

  • 必须给子查询加临时别名(比如示例中的tmp_table),否则SQL Server会因无法识别结果集的表标识而报错。
  • 复杂查询逻辑(多表关联、过滤、聚合等)都可以直接写在括号内,语法和你在数据库客户端写的SQL完全一致。
  • Spark JDBC并没有提供sqlcommand这类参数,核心就是通过dbtable参数支持子查询方式来直接读取查询结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 15:21:11