[unixODBC][驱动程序管理器]无法打开lib'/opt/cloudera/impalaodbc/lib/universal/libclouderaimpalaodbc.dylib':找不到文件

Nor*_*man 5 odbc unixodbc cloudera

我正在尝试让 Cloudera Impala ODBC 在全新的M1 Mac上运行。为此,我通过官方 MS 文档安装了 MS ODBC 18 ,并遵循了Cloudera ODBC 连接器安装指南

但是,当尝试连接时,我收到以下错误:

[Error: [odbc] Error connecting to the database] {
  odbcErrors: [
    {
      state: '01000',
      code: 0,
      message: "[unixODBC][Driver Manager]Can't open lib '/opt/cloudera/impalaodbc/lib/universal/libclouderaimpalaodbc.dylib' : file not found"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我的 ODBC 安装:

myuser@computer ~ % odbcinst -j
unixODBC 2.3.11
DRIVERS............: /opt/homebrew/etc/odbcinst.ini
SYSTEM DATA SOURCES: /opt/homebrew/etc/odbc.ini
FILE DATA SOURCES..: /opt/homebrew/etc/ODBCDataSources
USER DATA SOURCES..: /Users/myuser/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
Run Code Online (Sandbox Code Playgroud)

odbcinst.ini

[ODBC Drivers]
Cloudera ODBC Driver for Impala      = Installed
Cloudera ODBC Driver for Apache Hive = Installed

[Cloudera ODBC Driver for Impala]
Description = Cloudera ODBC Driver for Impala
Driver      = /opt/cloudera/impalaodbc/lib/universal/libclouderaimpalaodbc.dylib

[Cloudera ODBC Driver for Apache Hive]
Driver = /opt/cloudera/hiveodbc/lib/universal/libclouderahiveodbc.dylib
Run Code Online (Sandbox Code Playgroud)

odbc.ini

[foobarbinbaz]
Driver=/opt/cloudera/impalaodbc/lib/universal/libclouderaimpalaodbc.dylib
HOST=***
PORT=433
AuthMech=3
UseSASL=0
UID=****
PWD=****
SSL=1
TransportMode=2
HTTPPath=clicervice
CAIssuedCertNamesMismatch=1
TrustedCerts=/opt/cloudera/impalaodbc/lib/universal/cacerts.pem
TSaslTransportBufSize=1000
RowsFetchedPerBlock=10000
SocketTimeout=0
StringColumnLength=32767
UseNativeQuery=0
Run Code Online (Sandbox Code Playgroud)

我检查的内容:

  1. 如果文件/opt/cloudera/impalaodbc/lib/universal/libclouderaimpalaodbc.dylib确实存在(确实存在)
  2. Driver在我的 odbc.ini 中交换Cloudera ODBC Driver for Impala/opt/cloudera/impalaodbc/lib/universal/libclouderaimpalaodbc.dylib在这两种情况下它都会搜索路径)
  3. 该文件/Users/myuser/.odbc.ini实际上是一个符号链接/Users/myuser/Library/ODBC/odbc.ini(但这应该不是问题,对吧?)
  4. 检查了Microsoft 的已知问题文章(但我找不到我的具体问题)
  5. sudo chmod -R a+rw cloudera/opt目录内

Col*_*ean 1

自 2021 年 3 月 26 日发布的 v2.6.11 起,适用于 Apache Hive 的 Cloudera ODBC 驱动程序在其通用二进制文件中不包含 ARM64 组件。我想 Impala 驱动程序也是如此。

$ file /opt/cloudera/hiveodbc/lib/universal/libclouderahiveodbc.dylib
/opt/cloudera/hiveodbc/lib/universal/libclouderahiveodbc.dylib: Mach-O universal binary with 2 architectures: [i386:Mach-O dynamically linked shared library i386
- Mach-O dynamically linked shared library i386] [x86_64]
/opt/cloudera/hiveodbc/lib/universal/libclouderahiveodbc.dylib (for architecture i386): Mach-O dynamically linked shared library i386
/opt/cloudera/hiveodbc/lib/universal/libclouderahiveodbc.dylib (for architecture x86_64):       Mach-O 64-bit dynamically linked shared library x86_64
$ lipo -archs /opt/cloudera/hiveodbc/lib/universal/libclouderahiveodbc.dylib
i386 x86_64
Run Code Online (Sandbox Code Playgroud)

我的系统:

$ sw_vers 
ProductName:    macOS
ProductVersion: 12.5
BuildVersion:   21G72
$ uname -mprsv
Darwin 21.6.0 Darwin Kernel Version 21.6.0: Sat Jun 18 17:07:22 PDT 2022; root:xnu-8020.140.41~1/RELEASE_ARM64_T6000 arm64 arm
Run Code Online (Sandbox Code Playgroud)

在 Cloudera 使用 ARM64 版本更新驱动程序之前,该库将无法工作。

另请参阅m1 Mac 上的 Hive ODBC 驱动程序