Support Questions

Find answers, ask questions, and share your expertise

Unable to connect Excel 2016 for MAC to Hive

avatar
New Contributor

Now the hive ODBC driver can be installed in OS X 10.11, however, Excel 2016 for MAC still can not connect. My DSN was tested successfully with iodbctest, however, Excel failed to connect with error message "IM003 [iODBC][Driver Manager]Specified driver could not be loaded" and "00000 [iODBC][Driver Manager]dlopen(/opt/hortonworks/hiveodbc/lib/universal/libhortonworkshiveodbc.dylib, 6): no suitable image found. Did find /opt/hortonworks/hiveodbc/lib/universal/libhortonworkshiveodbc.dylib: open() failed with errno=1"

1 ACCEPTED SOLUTION

avatar
Contributor

I ran into this same problem with Excel 2016 on El Capitan. Jiaxing Liang is right in that OS X's sandboxing is blocking access to libhortonworkshiveodbc.dylib. You can verify the same by launching /Applications/Utilities/Console and filtering on 'sandboxd'. The Activity Monitor can also display if sandboxing is enabled. View -> Columns -> Sandbox.

As a work around I copied the Hortonworks Hive ODBC driver from the default install location of /opt/hortonworks to /Library/ODBC/hortonworks. I then updated the odbc.ini and odbcinst.ini files to reference the new driver location.

# Driver: The location where the ODBC driver is installed to. Driver=/Library/ODBC/hortonworks/hiveodbc/lib/universal/libhortonworkshiveodbc.dylib

The ErrorMessagesPath in the hortonworks.hiveodbc.ini files was being blocked too so that needed updating as well.

ErrorMessagesPath=/Library/ODBC/hortonworks/hiveodbc/ErrorMessages/

View solution in original post

22 REPLIES 22

avatar
Guru

Tried that one, didn't work. I am trying to use system DSN by the way, however, I do not suppose it really matters. The error is the same, it looks like it didn't even try to look at the new file.

avatar

Did you set Driver=/usr/lib/libhortonworkshiveodbc.dylib in your ODBC configuration.

avatar

avatar
Contributor

I ran into this same problem with Excel 2016 on El Capitan. Jiaxing Liang is right in that OS X's sandboxing is blocking access to libhortonworkshiveodbc.dylib. You can verify the same by launching /Applications/Utilities/Console and filtering on 'sandboxd'. The Activity Monitor can also display if sandboxing is enabled. View -> Columns -> Sandbox.

As a work around I copied the Hortonworks Hive ODBC driver from the default install location of /opt/hortonworks to /Library/ODBC/hortonworks. I then updated the odbc.ini and odbcinst.ini files to reference the new driver location.

# Driver: The location where the ODBC driver is installed to. Driver=/Library/ODBC/hortonworks/hiveodbc/lib/universal/libhortonworkshiveodbc.dylib

The ErrorMessagesPath in the hortonworks.hiveodbc.ini files was being blocked too so that needed updating as well.

ErrorMessagesPath=/Library/ODBC/hortonworks/hiveodbc/ErrorMessages/

avatar

Thanks, @bschofield!

avatar
Contributor

I should add my odbc.ini and odbcinst.ini files are under /Library/ODBC too. I am using System DSNs only.

avatar
Guru

thanks @bschofield, it worked like a charm

avatar
Explorer

Thank you! @bschofield

avatar
Guru

Thank you @bschofield that worked like charm

avatar
New Contributor

I'm having the same problem. I followed the tutorial you linked, and the data source didn't show up in the Data Source Selection box until I moved the config files into /Library/ODBC. Once there, the data source appears as a system DSN. The data source test in iODBC Administrator reports "The connection DSN was tested successfully, and can be used at this time", but when I test it under Excel I get the same error Sean Sun is getting. This is in an attempt to contact the sandbox. I'm using the same version of OS X and Excel he's using.

odbc.ini:

[ODBC]

# Specify any global ODBC configuration here such as ODBC tracing.

[ODBC Data Sources]

Sample Hortonworks Hive DSN=Hortonworks Hive ODBC Driver

[Sample Hortonworks Hive DSN]

# Description: DSN Description.

# This key is not necessary and is only to give a description of the data source.

Description=Hortonworks Hive ODBC Driver DSN

# Driver: The location where the ODBC driver is installed to.

Driver=/opt/hortonworks/hiveodbc/lib/universal/libhortonworkshiveodbc.dylib

# When using No Service Discovery, specify the IP address or host name of the Hive server.

# When using ZooKeeper as the Service Discovery Mode, specify a comma-separated list of ZooKeeper

# servers in the following format:

# <zk_host1:zk_port1>,<zk_host2:zk_port2>,...

#HOST=192.168.56.101

HOST=localhost

# The TCP port Hive server is listening. This is not required when using ZooKeeper as the service

# discovery mode as the port is specified in the HOST connection attribute.

PORT=10000

# The name of the database schema to use when a schema is not explicitly specified in a query.

Schema=default

# Set to 0 to when connecting directory to Hive Server 2 (No Service Discovery).

# Set to 1 to do Hive Server 2 service discovery using ZooKeeper.

# Note service discovery is not support when using Hive Server 1.

ServiceDiscoveryMode=0

# The namespace on ZooKeeper under which Hive Server 2 znodes are added. Required only when doing

# HS2 service discovery with ZooKeeper (ServiceDiscoveryMode=1).

ZKNamespace=

# Set to 1 if you are connecting to Hive Server 1. Set to 2 if you are connecting to Hive Server 2.

HiveServerType=2

# The authentication mechanism to use for the connection.

# Set to 0 for No Authentication

# Set to 1 for Kerberos

# Set to 2 for User Name

# Set to 3 for User Name and Password

# Note only No Authentication is supported when connecting to Hive Server 1.

AuthMech=2

# The Thrift transport to use for the connection.

#Set to 0 for Binary

#Set to 1 for SASL

#Set to 2 for HTTP

# Note for Hive Server 1 only Binary can be used.

ThriftTransport=1

# When this option is enabled (1), the driver does not transform the queries emitted by an

# application, so the native query is used.

# When this option is disabled (0), the driver transforms the queries emitted by an application and

# converts them into an equivalent from in HiveQL.

UseNativeQuery=0

# Set the UID with the user name to use to access Hive when using AuthMech 2 to 8.

UID=sandbox

# The following is settings used when using Kerberos authentication (AuthMech 1 and 10)

# The fully qualified host name part of the of the Hive Server 2 Kerberos service principal.

# For example if the service principal name of you Hive Server 2 is:

# hive/myhs2.mydomain.com@EXAMPLE.COM

# Then set KrbHostFQDN to myhs2.mydomain.com

KrbHostFQDN=[Hive Server 2 Host FQDN]

# The service name part of the of the Hive Server 2 Kerberos service principal.

# For example if the service principal name of you Hive Server 2 is:

# hive/myhs2.mydomain.com@EXAMPLE.COM

# Then set KrbServiceName to hive

KrbServiceName=[Hive Server 2 Kerberos service name]

# The realm part of the of the Hive Server 2 Kerberos service principal.

# For example if the service principal name of you Hive Server 2 is:

# hive/myhs2.mydomain.com@EXAMPLE.COM

# Then set KrbRealm to EXAMPLE.COM

KrbRealm=[Hive Server 2 Kerberos realm]

# Set to 1 to enable SSL. Set to 0 to disable.

SSL=0

# Set to 1 to enable two-way SSL. Set to 0 to disable. You must enable SSL in order to

# use two-way SSL.

TwoWaySSL=0

# The file containing the client certificate in PEM format. This is required when using two-way SSL.

ClientCert=

# The client private key. This is used for two-way SSL authentication.

ClientPrivateKey=

# The password for the client private key. Password is only required for password protected

# client private key.

ClientPrivateKeyPassword=

odbcinst.ini:

[ODBC Drivers]

Hortonworks Hive ODBC Driver=Installed

[Hortonworks Hive ODBC Driver]

Description=Hortonworks Hive ODBC Driver

Driver=/opt/hortonworks/hiveodbc/lib/universal/libhortonworkshiveodbc.dylib

hortonworks.hiveodbc.ini:

[Driver]

ErrorMessagesPath=/opt/hortonworks/hiveodbc/ErrorMessages/

LogLevel=0

LogPath=

SwapFilePath=/tmp