使用.net应用程序连接到配置单元

wdebmtf2  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(427)

我正在尝试为我的一个项目创建一个poc,它允许我使用odbc连接字符串连接到hive。
我已经成功地使用dsn方法连接到hive。但这对我不起作用,因为我需要允许在运行时创建连接,在运行时连接源可以从一个主机更改到另一个主机。
我正在使用下面的连接字符串(使用microsoftobc驱动程序),这是我从http://www.codeproject.com/tips/738141/how-to-communicate-to-hadoop-via-hive-using-net-cs

var conn = new OdbcConnection {
    ConnectionString = @
    "DRIVER={Microsoft Hive ODBC Driver};
Host=<IP>;
Port=10000;
User Name=root;Password=<PWD>;
Database=default;
HiveServerType=2;
ApplySSPWithQueries=1;
TrustedCerts=C:\Program Files\Microsoft Hive ODBC Driver\lib\cacerts.pem;
AsyncExecPollInterval=100;
AuthMech=0;
CAIssuedCertNamesMismatch=0;"
}

using(conn) {
    conn.Open();
    DataTable dt = new DataTable();
    OdbcCommand cmd = conn.CreateCommand();
    cmd.CommandText =
        "SELECT * FROM categories;";

    DbDataReader dr = await cmd.ExecuteReaderAsync();
    dt.Load(dr);
}

当我试图打开连接时,网络超时。

ERROR [HY000] [Microsoft][HiveODBC] (34) Error from Hive: ETIMEDOUT.

我不知道怎么解决这个问题。

8dtrkrch

8dtrkrch1#

我找到了解决办法。您缺少用户名,连接字符串中的pwd更改如下:

ConnectionString = @"
                        Dsn=Sample Microsoft Hive DSN;
                        applysspwithqueries=1;asyncexecpollinterval=100;
                        authmech=3;binarycolumnlength=32767;
                        caissuedcertnamesmismatch=0;
                        decimalcolumnscale=10;
                        gettableswithquery=0;
                        host=*******;
                        port=10000;
                        rowsfetchedperblock=10000;
                        trustedcerts={C:\Program Files (x86)\Microsoft Hive ODBC Driver\lib\cacerts.pem};
                        Schema=default;
                        uid=************;
                        pwd=************"
t40tm48m

t40tm48m2#

在浏览了这篇博文的信息后,我发现它起了作用。
这是我使用的连接字符串。

var connectionstring = @"DRIVER={Microsoft Hive ODBC Driver};                                        
                        Host=******;
                        Port=10000;
                        Schema=default;
                        HiveServerType=2;
                        ApplySSPWithQueries=1;
                        AsyncExecPollInterval=100;
                        HS2AuthMech=2;
                        UserName=******;
                        trustedcerts={C:\Program Files\Microsoft Hive ODBC Driver\lib\cacerts.pem}";

相关问题