Andrew Wong created IMPALA-10557:
------------------------------------

             Summary: Allow Impala to use Kudu's multi-row transaction 
implementation
                 Key: IMPALA-10557
                 URL: https://issues.apache.org/jira/browse/IMPALA-10557
             Project: IMPALA
          Issue Type: New Feature
          Components: Clients
            Reporter: Andrew Wong


Once Kudu's support for multi-row transactions materializes, it'd be great if 
Impala could expose a query option or session-level flag to indicate that 
Impala should run queries that insert into Kudu in the context of a single 
transaction.

When the query option is set, similar to how transactions are opened for Hive 
ACID tables, a new Kudu transaction should be started by Impala's Frontend, and 
the resulting KuduTransaction object should be serialized and passed as context 
to the Impala executors, which should open their Kudu sessions using the 
{{KuduTransaction::CreateSession()}} API instead of the usual 
{{KuduClient::NewSession()}}.

Errors returned in the session should be propagated to the Impala Frontend 
before committing – it seems reasonable to expect that any session errors 
should result in Impala aborting the transaction.

The {{KuduTransaction}} handle in the frontend has a heartbeater built in, so 
unlike Hive ACID transactions, which require manual tracking of heartbeating, 
no additional manual requests are needed to maintain the transaction.

Kudu's Java client API is defined in [this 
patch|https://gerrit.cloudera.org/c/16894/], and C++ client API is defined in 
[this patch|https://gerrit.cloudera.org/c/16710/]. The implementation isn't 
fully operational quite yet – once [this patch to automatically register 
participants|https://gerrit.cloudera.org/c/17037/] lands, Impala developers 
should at least be able to start adding basic testing non-overlapping cases 
(partition locking is still in progress).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to