Hive Warehouse Connector Interfaces

The HiveWarehouseSession, CreateTableBuilder, and MergeBuilder interfaces present available HWC operations.

HiveWarehouseSession interface

package com.hortonworks.hwc;
        
public interface HiveWarehouseSession {
        
//Execute Hive SELECT query and return DataFrame (recommended)
Dataset<Row> sql(String sql);

//Execute Hive SELECT query and return DataFrame in JDBC client mode
//Execute Hive catalog-browsing operation and return DataFrame
Dataset<Row> execute(String sql);

//Execute Hive SELECT query and return DataFrame in LLAP mode (not available in this release)
Dataset<Row> executeQuery(String sql);

//Execute Hive update statement
boolean executeUpdate(String sql);
                
//Reference a Hive table as a DataFrame
Dataset<Row> table(String sql);
        
//Return the SparkSession attached to this HiveWarehouseSession
SparkSession session();
        
//Set the current database for unqualified Hive table references
void setDatabase(String name);
        
/**
* Helpers: wrapper functions over execute or executeUpdate
*/
        
//Helper for show databases
Dataset<Row> showDatabases();
        
//Helper for show tables
Dataset<Row> showTables();
        
//Helper for describeTable
Dataset<Row> describeTable(String table);
        
//Helper for create database
void createDatabase(String database, boolean ifNotExists);
        
//Helper for create table stored as ORC
CreateTableBuilder createTable(String tableName);
        
//Helper for drop database
void dropDatabase(String database, boolean ifExists, boolean cascade);
        
//Helper for drop table
void dropTable(String table, boolean ifExists, boolean purge);
        
//Helper for merge query
MergeBuilder mergeBuilder();

//Closes the HWC session. Session cannot be reused after being closed.
void close();

// Closes the transaction started by the direct reader. The transaction is not committed if user
// uses rdd APIs.
void commitTxn();
}

CreateTableBuilder interface

package com.hortonworks.hwc;
        
public interface CreateTableBuilder {
        
//Silently skip table creation if table name exists
CreateTableBuilder ifNotExists();
        
//Add a column with the specific name and Hive type
//Use more than once to add multiple columns
CreateTableBuilder column(String name, String type);
        
//Specific a column as table partition
//Use more than once to specify multiple partitions
CreateTableBuilder partition(String name, String type);
        
//Add a table property
//Use more than once to add multiple properties
CreateTableBuilder prop(String key, String value);
        
//Make table bucketed, with given number of buckets and bucket columns
CreateTableBuilder clusterBy(long numBuckets, String ... columns);
        
//Creates ORC table in Hive from builder instance
void create();
}   

MergeBuilder interface

package com.hortonworks.hwc;
        
public interface MergeBuilder {
        
//Specify the target table to merge
MergeBuilder mergeInto(tring targetTable, String alias);
        
//Specify the source table or expression, such as (select * from some_table)
// Enclose expression in braces if specified.
MergeBuilder using(String sourceTableOrExpr, String alias);
        
//Specify the condition expression for merging
MergeBuilder on(String expr);
        
//Specify fields to update for rows affected by merge condition and matchExpr 
MergeBuilder whenMatchedThenUpdate(String matchExpr, String... nameValuePairs);
        
//Delete rows affected by the merge condition and matchExpr
MergeBuilder whenMatchedThenDelete(String matchExpr);
        
//Insert rows into target table affected by merge condition and matchExpr
MergeBuilder whenNotMatchedInsert(String matchExpr, String... values);
        
//Execute the merge operation
void merge();
}