python - 有没有办法使用 ADO.Net 连接到数据 block ?

标签 python .net .net-core databricks azure-databricks

我想构建一个 API 来查询数据 block 的表并将结果输出为 JSON。实现此目的的一种方法是调用数据 block Jobs REST API执行作业并读取作业输出但有数据大小限制(最大 5MB,我的 API 结果集可以超过 20MB)。相反,我是否可以使用 Microsoft.Net 集群提供的 JDBC/ODBC 端点连接到数据 block ,或者是否有任何其他方式可以直接连接?我的 API 层最好需要在 Microsoft.Net 中构建。不过,我愿意尝试 Python。

最佳答案

我找到了几种连接到数据 block 集群的方法

  1. 使用 ODBC 连接与 Simba 驱动程序进行连接 (https://pages.databricks.com/ODBC-Driver-Download.html)。另外,@EdHarper 在上面的评论中分享
  2. 使用 cdata nuget 包 - https://www.cdata.com/drivers/spark/ado/但是,这涉及到许可费用
  3. 使用提供的 JDBC 连接字符串,可能需要 Java 代码

我继续使用选项 #1,下面是一个示例 C# 代码。

// Build connection string
OdbcConnectionStringBuilder odbcConnectionStringBuilder = new OdbcConnectionStringBuilder
        {
            Driver = "Simba Spark ODBC Driver"
        };
        odbcConnectionStringBuilder.Add("Host", "adb-xxxxxxxxxxxxx.7.xxxxxxxbricks.net");
        odbcConnectionStringBuilder.Add("Port", "443");
        odbcConnectionStringBuilder.Add("SSL", "1");             
        odbcConnectionStringBuilder.Add("ThriftTransport", "2");
        odbcConnectionStringBuilder.Add("AuthMech", "3");
        odbcConnectionStringBuilder.Add("UID", "token");
        odbcConnectionStringBuilder.Add("PWD", "<Access token generated in databricks>");
        odbcConnectionStringBuilder.Add("HTTPPath", "sql/protocolv1/o/xxxxxxxxxxxxxxx/yyyy8-dfcccf-tyyujjk8");


    using (OdbcConnection connection = new OdbcConnection(odbcConnectionStringBuilder.ConnectionString))
    {
        string sqlQuery = "select * from yourdb.TableName";
        OdbcCommand command = new OdbcCommand(sqlQuery, connection);
        connection.Open();
        OdbcDataReader reader = command.ExecuteReader();

        for (int i = 0; i < reader.FieldCount; i++)
        {
            Console.Write(reader.GetName(i) + "\t");
        }

        Console.Write("\n");

        reader.Close();
        command.Dispose();
    }

此外,您可以根据需要使用 DSN 进行连接,更多详细信息请参见此处 - https://www.simba.com/products/Spark/doc/v1/ODBC_InstallGuide/win/content/odbc/hi/windows/dsn.htm

关于python - 有没有办法使用 ADO.Net 连接到数据 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65334114/

相关文章:

c# - 如何获取.net core服务器名称和选项

python - Python 如何跟踪对象的类型

c# - GetEnvironmentVariable ("TEMP") 没有波浪号 (~)

python - Np.savetxt 将标题与列对齐

c# - 排除在调试中构建的文件

.net - String.Split VS。正则表达式.拆分?

macos - 如何在 osx 上分发 .net core 2.0 控制台应用程序

c# - RSA 处置对象错误 - 每隔一个测试

python - 按照第一个 Django 应用程序教程,我无法执行 runserver 命令

python - cvxpy:针对大型问题在二维中实现平滑度的最佳策略