Dear Wiki user, You have subscribed to a wiki page or wiki category on "Hadoop Wiki" for change notification.
The following page has been changed by EricHwang: http://wiki.apache.org/hadoop/Hive/HiveODBC ------------------------------------------------------------------------------ === Software Requirements === The following software components are needed for the successful compilation and operation of the Hive ODBC driver: * '''Hive Server''' - a service through which clients may remotely issue Hive commands and requests. The Hive ODBC driver depends on Hive Server to perform the core set of database interactions. Hive Server is built as part of the Hive build process. More information regarding Hive Server usage can be found [wiki:Hive/HiveServer here]. - * '''Apache Thrift''' - a scalable cross-language software framework that enables the Hive ODBC driver (specifically the Hive client) to communicate with the Hive Server. See here for the details on [http://wiki.apache.org/thrift/ThriftInstallation Thrift Installation]. The Hive ODBC driver was developed with Thrift trunk version r790732, but the latest revision should also be fine. Make sure you note the Thrift install path during the Thrift build process as this information will be needed during the Hive client build process. The Thrift install path will be referred to as THRIFT_HOME. + * '''Apache Thrift''' - a scalable cross-language software framework that enables the Hive ODBC driver (specifically the Hive client) to communicate with the Hive Server. See this link for the details on [http://wiki.apache.org/thrift/ThriftInstallation Thrift Installation]. The Hive ODBC driver was developed with Thrift trunk version r790732, but the latest revision should also be fine. Make sure you note the Thrift install path during the Thrift build process as this information will be needed during the Hive client build process. The Thrift install path will be referred to as THRIFT_HOME. === Driver Architecture === Internally, the Hive ODBC Driver contains two separate components: Hive client, and the unixODBC API wrapper. * '''Hive client''' - provides a set of C-compatible library functions to interact with Hive Server in a pattern similar to those dictated by the ODBC specification. However, Hive client was designed to be independent of unixODBC or any ODBC specific headers, allowing it to be used in any number of generic cases beyond ODBC. - * '''unixODBC API wrapper''' - provides a layer on top of Hive client that directly implements the ODBC API standard. The unixODBC API wrapper will be compiled into a shared object library, which will be the final form of the Hive ODBC driver. This portion will remain a file attachment on the associated JIRA until it can be checked into the unixODBC code repository: [https://issues.apache.org/jira/browse/HIVE-187 HIVE-187]. + * '''unixODBC API wrapper''' - provides a layer on top of Hive client that directly implements the ODBC API standard. The unixODBC API wrapper will be compiled into a shared object library, which will be the final form of the Hive ODBC driver. The wrapper files will remain a file attachment on the associated JIRA until it can be checked into the unixODBC code repository: [https://issues.apache.org/jira/browse/HIVE-187 HIVE-187]. NOTE: Hive client needs to be built and installed before the unixODBC API wrapper can compile successfully. @@ -74, +74 @@ a.#2 If your system complains about {{{undefined symbols}}} during unixODBC testing (such as with {{{isql}}} or {{{odbcinst}}}) after installation, try running {{{ldconfig}}} to update your dynamic linker's runtime libraries. 1.#4 If you only want to obtain the Hive ODBC driver shared object library: a. After compilation, the driver will be located at {{{<unixODBC_BUILD_DIR>/Drivers/hive/.libs/libodbchive.so.1.0.0}}}. - a. This may be copied to any other location as desired. Keep in mind that the Hive ODBC driver has a dependency on the Hive client shared object library: {{{libhiveclient.so}}}. + a. This may be copied to any other location as desired. Keep in mind that the Hive ODBC driver has a dependency on the Hive client shared object library: {{{libhiveclient.so}}} and {{{libthrift.so.0}}}. a. You can manually install the unixODBC API wrapper by doing the following: {{{ $ cp <unixODBC_BUILD_DIR>/Drivers/hive/.libs/libodbchive.so.1.0.0 <SYSTEM_INSTALL_DIR> @@ -121, +121 @@ === Current Status === * Comments: - Please keep in mind that this is still an initial version and is still very rough around the edges. However, it provides basic ODBC 3.51 API support for connecting, executing queries, fetching, etc. This driver has been successfully tested on 32-bit and 64-bit linux machines with iSQL. It has also been tested with partial success on enterprise applications such as MicroStrategy. The driver consists of two sections: the Hive client and the unixODBC API wrapper. The unixODBC portion will be uploaded as a separate attachment that will not be part of this repository (for licensing reasons). + Please keep in mind that this is still an initial version and is still very rough around the edges. However, it provides basic ODBC 3.51 API support for connecting, executing queries, fetching, etc. This driver has been successfully tested on 32-bit and 64-bit linux machines with iSQL. It has also been tested with partial success on enterprise applications such as MicroStrategy. Due to licensing reasons, the unixODBC API wrapper files will be uploaded as a separate JIRA attachment that will not be part of this code repository. * Limitations: + * Only support for Linux operating systems * No support for Unicode - * Not thread safe * No support for asynchronous execution of queries - * Does not check for memory allocation errors * Does not support pattern matching for functions such as SQLColumns and SQLTables; requires exact matches. * Hive Server is currently not thread safe (see JIRA HIVE-80: https://issues.apache.org/jira/browse/HIVE-80). This will prevent the driver from safely making multiple connections to the same Hive Server. We need to resolve this issue to allow the driver to operate properly. - * ODBC API Function Support: + * ODBC API Function Support (does anyone know how to remove the linking from the function names?): * SQLAllocConnect - supported * SQLAllocEnv - supported * SQLAllocHandle - supported