在 azure databricks 中查询 sql 服务器 table
Query sql server table in azure databricks
我正在使用下面的代码在我的 azure sql 服务器数据库中查询 sql 服务器 table hr.employee使用天蓝色数据块。我是 spark sql 的新手,并尝试一次一步地了解细微差别。
Azure Databricks:
%scala
val jdbcHostname = dbutils.widgets.get("hostName")
val jdbcPort = 1433
val jdbcDatabase = dbutils.widgets.get("database")
val jdbcUrl = s"jdbc:sqlserver://${jdbcHostname}:${jdbcPort};database=${jdbcDatabase}"
import java.util.Properties
val connectionProperties = new Properties()
connectionProperties.put("user", s"${jdbcUsername}")
connectionProperties.put("password", s"${jdbcPassword}")
%scala
val driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
connectionProperties.setProperty("Driver", driverClass)
%scala
val employee = spark.read.jdbc(jdbcUrl, "hr.Employee", connectionProperties)
%scala
spark.sql("select * from employee")
%sql
select * from employee
employee.select("col1","col2").show()
我收到以下错误。不知道我做错了什么。也尝试了几个变体,但到目前为止运气不好。
错误:
';' expected but integer literal found.
command-922779590419509:26: error: not found: value %
%sql
command-922779590419509:27: error: not found: value select
select * from employee
command-922779590419509:27: error: not found: value from
select * from employee
command-922779590419509:16: error: not found: value %
%scala
您可以查看以下步骤来查询 SQL 服务器使用其 JDBC 驱动程序:
注意:对于整个教程,我使用“Scala
”源代码。
步骤 1:检查 JDBC 驱动程序是否可用
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
步骤 2: 创建 JDBC URL
val jdbcHostname = "<hostname>"
val jdbcPort = 1433
val jdbcDatabase = "<database>"
// Create the JDBC URL without passing in the user and password parameters.
val jdbcUrl = s"jdbc:sqlserver://${jdbcHostname}:${jdbcPort};database=${jdbcDatabase}"
// Create a Properties() object to hold the parameters.
import java.util.Properties
val connectionProperties = new Properties()
connectionProperties.put("user", s"${jdbcUsername}")
connectionProperties.put("password", s"${jdbcPassword}")
步骤 3:检查与 SQL服务器数据库的连接
val driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
connectionProperties.setProperty("Driver", driverClass)
Step4:从JDBC
读取数据
val employees_table = spark.read.jdbc(jdbcUrl, "employees", connectionProperties)
Step5: 从数据库中读取模式 table
employees_table.printSchema
Step6: 你可以运行查询这个JDBC table:
display(employees_table.select("age", "salary").groupBy("age").avg("salary"))
截图给大家参考:
=======> 更新答案 <===============
要使用SQL查询:
第 1 步: 从 Python 或 Scala 中的 DataFrame 创建全局 table:
dataFrame.write.saveAsTable("<table-name>")
** 第 2 步:** 现在 运行 SQL 查询
spark.sql("select * from employees_table")
%sql
select * from employees_table
我正在使用下面的代码在我的 azure sql 服务器数据库中查询 sql 服务器 table hr.employee使用天蓝色数据块。我是 spark sql 的新手,并尝试一次一步地了解细微差别。
Azure Databricks:
%scala
val jdbcHostname = dbutils.widgets.get("hostName")
val jdbcPort = 1433
val jdbcDatabase = dbutils.widgets.get("database")
val jdbcUrl = s"jdbc:sqlserver://${jdbcHostname}:${jdbcPort};database=${jdbcDatabase}"
import java.util.Properties
val connectionProperties = new Properties()
connectionProperties.put("user", s"${jdbcUsername}")
connectionProperties.put("password", s"${jdbcPassword}")
%scala
val driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
connectionProperties.setProperty("Driver", driverClass)
%scala
val employee = spark.read.jdbc(jdbcUrl, "hr.Employee", connectionProperties)
%scala
spark.sql("select * from employee")
%sql
select * from employee
employee.select("col1","col2").show()
我收到以下错误。不知道我做错了什么。也尝试了几个变体,但到目前为止运气不好。
错误:
';' expected but integer literal found.
command-922779590419509:26: error: not found: value %
%sql
command-922779590419509:27: error: not found: value select
select * from employee
command-922779590419509:27: error: not found: value from
select * from employee
command-922779590419509:16: error: not found: value %
%scala
您可以查看以下步骤来查询 SQL 服务器使用其 JDBC 驱动程序:
注意:对于整个教程,我使用“Scala
”源代码。
步骤 1:检查 JDBC 驱动程序是否可用
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
步骤 2: 创建 JDBC URL
val jdbcHostname = "<hostname>"
val jdbcPort = 1433
val jdbcDatabase = "<database>"
// Create the JDBC URL without passing in the user and password parameters.
val jdbcUrl = s"jdbc:sqlserver://${jdbcHostname}:${jdbcPort};database=${jdbcDatabase}"
// Create a Properties() object to hold the parameters.
import java.util.Properties
val connectionProperties = new Properties()
connectionProperties.put("user", s"${jdbcUsername}")
connectionProperties.put("password", s"${jdbcPassword}")
步骤 3:检查与 SQL服务器数据库的连接
val driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
connectionProperties.setProperty("Driver", driverClass)
Step4:从JDBC
读取数据val employees_table = spark.read.jdbc(jdbcUrl, "employees", connectionProperties)
Step5: 从数据库中读取模式 table
employees_table.printSchema
Step6: 你可以运行查询这个JDBC table:
display(employees_table.select("age", "salary").groupBy("age").avg("salary"))
截图给大家参考:
=======> 更新答案 <===============
要使用SQL查询:
第 1 步: 从 Python 或 Scala 中的 DataFrame 创建全局 table:
dataFrame.write.saveAsTable("<table-name>")
** 第 2 步:** 现在 运行 SQL 查询
spark.sql("select * from employees_table")
%sql
select * from employees_table