我们正在尝试在 C# .NET 控制台应用程序和 Azure Databricks 仓库之间建立连接。 我们已按照以下说明设置和配置 ODBC 驱动程序:
https://docs.databricks.com/en/integrations/jdbc-odbc-bi.html#odbc-windows
这是控制台应用程序代码:
using System;
using System.Data;
using System.Data.Odbc;
namespace DatabricksJdbcExample
{
class Program
{
static void Main(string[] args)
{
// Create a connection string to the Databricks warehouse.
// string connectionString = "odbc:databricks://adb-6817616643364.19.azuredatabricks.net:443/default;transportMode=http;ssl=1;AuthMech=3;httpPath=/sql/1.0/warehouses/827c2f60de39fa0e;";
string connectionString = "DSN=databricksfiledsn";
// Create a new OdbcConnection object.
using (OdbcConnection connection = new OdbcConnection(connectionString))
{
// Open the connection.
connection.Open();
// Create a new OdbcCommand object.
OdbcCommand command = new OdbcCommand("SELECT * FROM hive_metastore.demos_dlt_loans_eugene_goldberg117.historical_txs", connection);
// Execute the command and get the results.
OdbcDataReader reader = command.ExecuteReader();
// Print the results to the console.
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
Console.Write(reader.GetValue(i) + "\t");
}
Console.WriteLine();
}
// Close the reader.
reader.Close();
// Close the connection.
connection.Close();
}
}
}
}
请注意,我们有两种连接字符串变体:第一个具有完整的连接字符串,而下面的一个则引用我们在开始时设置的 ODBC DSN。 有趣的是,这两种方法都不适合我们,因为我们在使用任一 connectionString 变体时都会收到相同的错误消息:
System.Data.Odbc.OdbcException: Data source not found and no default driver specified
配置它使其工作的正确方法是什么?
添加 DSN 设置,如下所示:
在 Password 字段中,提供您创建的 Databricks 访问令牌。它应该看起来像这样:
dapi..........
。
在 Thrift Transport 选项中选择
HTTP
。
在 HTTP 选项中,添加来自 Databricks 的 HTTP 路径。 在 SSL 选项中,启用 SSL。
请参阅此 Stack Overflow 解决方案。
输出:
如果您想使用连接字符串,请将其格式化如下:
Driver=<path-to-driver>;Host=<server-hostname>;Port=443;HTTPPath=<http-path>;ThriftTransport=2;SSL=1;AuthMech=3;UID=token;PWD=<personal-access-token>
示例:
Driver={Simba Spark ODBC Driver};Host=adb-436423333334855.15.azuredatabricks.net;Port=443;HTTPPath=sql/protocolv1/o/234456634855/1111-3456-jdcbhj2;ThriftTransport=2;SSL=1;AuthMech=3;UID=token;PWD=dapi......"
输出:
确保安装 ODBC 驱动程序。