使用unixODBC无法找到hive odbc连接器错误消息

时间:2014-10-08 08:41:36

标签: sql ubuntu odbc hive driver

我正在尝试设置unixodbc以使用来自cloudera的hive驱动程序连接器(在Ubuntu机器中)。

在我的〜/ .local / lib文件夹中,我有链接到cloudera提供的.so文件, env变量LD_LIBRARY_PATH也包含/home/luca/.local/lib:/opt/cloudera/hiveodbc/lib/64/

我创建了包含以下内容的文件/etc/odbcinst.ini:

[hive]
Description = Cloudera ODBC Driver for Apache Hive (64-bit)
Driver      = /home/luca/.local/lib/libclouderahiveodbc64.so
ODBCInstLib= /home/luca/.local/lib/libodbcinst.so
UsageCount  = 1
DriverManagerEncoding=UTF-16
ErrorMessagesPath=/opt/cloudera/hiveodbc/ErrorMessages/
LogLevel=0
SwapFilePath=/tmp

在我的主文件夹中,我.odbc.ini包含:

[hive]
Driver=hive
HOST=<thehost>
PORT=<theport>
Schema=<theschema>
FastSQLPrepare=0
UseNativeQuery=0
HiveServerType=2
AuthMech=2
#KrbHostFQDN=[Hive Server 2 Host FQDN]
#KrbServiceName=[Hive Server 2 Kerberos service name]
UID=<myuid>

使用isql -v hive测试连接时 我收到以下错误消息:

[S1000][unixODBC][DSI] The error message NoSQLGetPrivateProfileString could not be found in the en-US locale. Check that /en-US/ODBCMessages.xml exists.
[ISQL]ERROR: Could not SQLConnect

如何解决此问题(为什么/ en-US /的路径是绝对的?)

1 个答案:

答案 0 :(得分:0)

在ODBCInstLib库中找不到SQLGetPrivateProfileString。无法加载库,或库未包含符号。

使用 static long q20(){ long sum = 0; String factorial = factorial(new BigInteger("100")).toString(); for(int i=0;i<factorial.length();i++){ sum += Long.parseLong(factorial.charAt(i)+""); } return sum; } static BigInteger factorial(BigInteger n){ BigInteger one = new BigInteger("1"); if(n.equals(one)) return one; return n.multiply(factorial(n.subtract(one))); } 查看是否正在加载配置文件。使用strace isql -v hive 2>&1 | grep ini查看库的位置。

确保库存在于给定位置并具有正确的体系结构。使用strace isql -v hive 2>&1 | grep odbcinst.so检查体系结构。使用file -L /home/luca/.local/lib/libodbcinst.so检查它是否具有正确的符号。