Skip to content

C++ native client for Impala and Hive, with Python / pandas bindings

License

Notifications You must be signed in to change notification settings

snehlatamohite/hs2client

 
 

Repository files navigation

hs2client: C++ Thrift client for Impala and Hive

Build Status travis build status

This is a new project to create a robust, high performance open source HiveServer2 client library in C++. In addition to being a useful component for other C++ projects needing to communicate with Hive, Impala, and any systems using the HiveServer2 protocol, we can also create CPU- and memory-efficient bindings for other languages, like Python and R.

There is work still remaining to bring the project to feature-completeness with other Hive and Impala driver libraries:

  • SSL support
  • SASL Thrift transport (for secure clusters, or unsecure clusters configured to use the SASL transport)
  • Tools for asynchronous result set fetching

Development bootstrap

To build standalone thirdparty dependencies, ensure you are using a C++11 compiler and run:

# Build thirdparty Thrift and googletest and set $THRIFT_HOME.

./thirdparty/download_thirdparty.sh
./thirdparty/build_thirdparty.sh
source thirdparty/set_thirdparty_env.sh

If you are using cloudera/native-toolchain, you can instead use an environment setup script like:

export BOOST_VERSION=1.57.0
export THRIFT_VERSION=0.9.0-p2
export GTEST_VERSION=20151222

if [[ $OSTYPE == "darwin"* ]]; then
	THRIFT_VERSION=0.9.2-p2
fi

export CC=$NATIVE_TOOLCHAIN/gcc-4.9.2/bin/gcc
export CXX=$NATIVE_TOOLCHAIN/gcc-4.9.2/bin/g++
export LD_LIBRARY_PATH=$NATIVE_TOOLCHAIN/gcc-4.9.2/lib64

export THRIFT_HOME=$NATIVE_TOOLCHAIN/thrift-$THRIFT_VERSION
export BOOST_HOME=$NATIVE_TOOLCHAIN/boost-$BOOST_VERSION
export GTEST_HOME=$NATIVE_TOOLCHAIN/googletest-$GTEST_VERSION

Currently, only in-source builds are working:

cmake .
make -j4

About

C++ native client for Impala and Hive, with Python / pandas bindings

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Thrift 35.0%
  • C++ 32.1%
  • Python 20.0%
  • CMake 7.9%
  • Shell 3.4%
  • Perl 1.3%
  • C 0.3%