Metadata-Version: 2.1
Name: hs2client
Version: 0.1.1
Summary: A package interact with Hive Server 2 via the Thrift protocol
Home-page: https://github.com/gglanzani/hs2client
Author: Giovanni Lanzani
Author-email: giovanni@lanzani.nl
License: Apache 2.0
Keywords: hive data database thrift metastore
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Information Technology
Classifier: Topic :: Database
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Provides-Extra: dev
Provides-Extra: test
Requires-Dist: thrift
Requires-Dist: click
Requires-Dist: future
Requires-Dist: thrift-sasl
Provides-Extra: dev
Requires-Dist: pytest; extra == 'dev'
Provides-Extra: test
Requires-Dist: pytest; extra == 'test'

HS2Client
=========

This project aims to be an up to date Python client to interact with Hive Server 2
using the Thrift protocol.

The project is heavily inspired by PyHive_ up to the point that part of the code
has been snatched from there. See *Differences* for more.

Installation
------------

Install it with ``pip install hs2client`` or directly from source

.. code-block:: python

    python setup.py install

Usage
-----

Using it from Python is simple:

.. code-block:: python

    from hs2client.hs2client import HS2Client

    client = HS2Client(host='127.0.0.1', username='user', port=10000, auth='NONE')

    with client as connection, connection.cursor() as cursor:
        cursor.arraysize = 10
        cursor.execute('select * from table')
        for row in cursor:
            print(row)


Regenerate the Python thrift library
------------------------------------

The ``hs2client.py`` is just a thin wrapper around the generated Python code to
interact with Hive Server 2 through the Thrift protocol.

To regenerate the code using a newer version of the ``.thrift`` files, you can
use ``generate.py`` (note: you need to have ``thrift`` installed, see here_)

.. code-block:: sh

    python generate.py --help

    Usage: generate.py [OPTIONS]

    Options:
      --hive_server2_url TEXT The URL where the TCLIService.thrift file can be downloaded
      --package TEXT          The package where the client should be placed
      --subpackage TEXT       The subpackage where the client should be placed
      --help                  Show this message and exit.

Otherwise the defaults will be used.

Differences with PyHive
-----------------------

* This pakcage lacks the sqlalchemy and the presto part;
* The main class, ``HS2Client`` inherits from ``TCLIService.Client``, making certain things
  handier;
* In cases where authentication is ``NONE``, the ``username`` is set to ``mr.who`` to avoid issues
  with the latest Hive Server 2 versions;
* Thrift 0.11 has been used to generate the Python files;
* The ``generate.py`` file allows to easily update the files generated from the thrift specs.

.. _here: https://thrift-tutorial.readthedocs.io/en/latest/installation.html
.. _PyHive: https://github.com/dropbox/PyHive


