【发布时间】:2020-07-10 05:04:35
【问题描述】:
我想使用 Azure Databricks 在 Azure SQL 托管实例中的数据库上执行 SQL 查询。我已使用 spark 连接器连接到 DB。
import com.microsoft.azure.sqldb.spark.config.Config
import com.microsoft.azure.sqldb.spark.connect._
val config = Config(Map(
"url" -> "mysqlserver.database.windows.net",
"databaseName" -> "MyDatabase",
"queryCustom" -> "SELECT TOP 100 * FROM dbo.Clients WHERE PostalCode = 98074" //Sql query
"user" -> "username",
"password" -> "*********",
))
//Read all data in table dbo.Clients
val collection = sqlContext.read.sqlDB(config)
collection.show()
我正在使用上述方法来获取数据(来自 MSFT 文档的示例)。在我的情况下,表大小超过 10M。我的问题是 Databricks 如何在这里处理查询?
以下是文档: Spark 主节点连接到 SQL 数据库或 SQL Server 中的数据库,并从特定表或使用特定 SQL 查询加载数据。 Spark 主节点将数据分发到工作节点进行转换。 Worker 节点连接到连接到 SQL Database 和 SQL Server 的数据库,并将数据写入数据库。用户可以选择使用逐行插入或批量插入。
它说主节点获取数据并稍后将工作分配给工作节点。在上面的代码中,在获取数据时,如果查询本身很复杂并且需要时间怎么办?它是否将工作分散到工作节点?或者我必须先将表数据提取到 Spark,然后运行 SQL 查询以获得结果。您建议哪种方法?
【问题讨论】:
-
如果答案对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记,将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢。
标签: apache-spark azure-sql-database databricks azure-databricks