Databricks SQL Driver for Go
Experimental
The Databricks SQL Driver for Go is provided as-is and is not officially supported by Databricks through customer technical support channels. Support, questions, and feature requests can be communicated through the Issues page of the databricks/databricks-sql-go repo on GitHub. Issues with the use of this code will not be answered or investigated by Databricks Support.
The Databricks SQL Driver for Go is a Go library that allows you to use Go code to run SQL commands on Databricks compute resources.
Requirements
A development machine running Go, version 1.18 or higher. To print the installed version of Go, run the command
go version
. Download and install Go.An existing cluster or SQL warehouse.
The Server Hostname and HTTP Path value for the existing cluster or SQL warehouse.
A Databricks personal access token.
Specify the DSN connection string
The Databricks SQL Driver for Go uses a data source name (DSN) connection string to access clusters and SQL warehouses. To specify the DSN connection string in the correct format, use the following syntax, where:
[your token]
is your Databricks personal access token from the requirements.[Workspace hostname]
is the Server Hostname value from the requirements.[Endpoint HTTP Path]
is the HTTP Path value from the requirements.
databricks://:[your token]@[Workspace hostname][Endpoint HTTP Path]
For example, for a cluster:
databricks://:dapi1ab2c34defabc567890123d4efa56789@dbc-a1b2345c-d6e7.cloud.databricks.com/sql/protocolv1/o/1234567890123456/1234-567890-abcdefgh
For example, for a SQL warehouse:
databricks://:dapi1ab2c34defabc567890123d4efa56789@dbc-a1b2345c-d6e7.cloud.databricks.com/sql/1.0/endpoints/a1b234c5678901d2
Note
As a security best practice, you should not hard-code this DSN connection string into your Go code. Instead, you should retrieve this DSN connection string from a secure location. For example, the code example later in this article uses an environment variable.
Query data
The following code example demonstrates how to call the Databricks SQL Driver for Go to run a basic SQL query on a Databricks compute resource. This command returns the first two rows from the diamonds
table.
The diamonds
table is included in Sample datasets (databricks-datasets). This table is also featured in Get started with Databricks as a data scientist.
This code example retrieves the DSN connection string from an environment variable named DATABRICKS_DSN
.
package main
import (
"database/sql"
"fmt"
"os"
_ "github.com/databricks/databricks-sql-go"
)
func main() {
dsn := os.Getenv("DATABRICKS_DSN")
if dsn == "" {
panic("No connection string found." +
"Set the DATABRICKS_DSN environment variable, and try again.")
}
db, err := sql.Open("databricks", dsn)
if err != nil {
panic(err)
}
var (
_c0 string
carat string
cut string
color string
clarity string
depth string
table string
price string
x string
y string
z string
)
rows, err := db.Query("SELECT * FROM default.diamonds LIMIT 2")
if err != nil {
panic(err)
}
defer rows.Close()
for rows.Next() {
err := rows.Scan(&_c0,
&carat,
&cut,
&color,
&clarity,
&depth,
&table,
&price,
&x,
&y,
&z)
if err != nil {
panic(err)
}
fmt.Print(_c0, ",",
carat, ",",
cut, ",",
color, ",",
clarity, ",",
depth, ",",
table, ",",
price, ",",
x, ",",
y, ",",
z, "\n")
}
err = rows.Err()
if err != nil {
panic(err)
}
}
Output:
1,0.23,Ideal,E,SI2,61.5,55,326,3.95,3.98,2.43
2,0.21,Premium,E,SI1,59.8,61,326,3.89,3.84,2.31
For additional examples, see the examples folder in the databricks/databricks-sql-go repository on GitHub.
Additional resources
The Databricks SQL Driver for Go repository on GitHub
The database/sql package home page