[ 
https://issues.apache.org/jira/browse/LENS-656?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rajat Khandelwal updated LENS-656:
----------------------------------
    Issue Type: Sub-task  (was: Improvement)
        Parent: LENS-657

> make Storage class more important
> ---------------------------------
>
>                 Key: LENS-656
>                 URL: https://issues.apache.org/jira/browse/LENS-656
>             Project: Apache Lens
>          Issue Type: Sub-task
>            Reporter: Rajat Khandelwal
>
> Current usage of Stogage in lens:
> * Storages are crated with xml, where only class name is required. It has to 
> be a subclass of org.apache.lens.cube.metadata.Storage. Two subclasses are 
> already provided: org.apache.lens.cube.metadata.HDFSStorage, and 
> org.apache.lens.storage.db.DBStorage. 
> * Current requirement of storage subclass is to implement methods of 
> org.apache.lens.cube.metadata.PartitionMetahook (will be shown below). The 
> two provided subclasses provide a no-op implementations of this. 
> Issues:
> * DBStorage has a dbUrl variable supposed to capture DB url. But that is not 
> used anywhere and is redundant. In the current design, the db url is required 
> in configuration of JDBCDriver. This means that drivers and storages are 
> deeply coupled. 
> * For querying partitions, Storage is not queried. Instead a map of storage 
> name to partitions is maintained elsewhere. Another example of deep coupling
> Proposed changes:
> * Storage as an independent entity. Basically removing the deep coupling
> * Facts will have Storage instances instead of storage names. With loose 
> coupling, one storage will have only one instance. 
> * Driver conf has a property "supported storages". That is currently used in 
> the resolvers. Instead the property will become an attribute of the driver. 
> {noformat}
> public interface PartitionMetahook {
>   void preAddPartitions(List<StoragePartitionDesc> storagePartitionDesc) 
> throws HiveException;
>   void commitAddPartitions(List<StoragePartitionDesc> storagePartitionDesc) 
> throws HiveException;
>   void rollbackAddPartitions(List<StoragePartitionDesc> storagePartitionDesc) 
> throws HiveException;
>   void preDropPartition(String storageTableName, List<String> partVals) 
> throws HiveException;
>   void commitDropPartition(String storageTableName, List<String> partVals) 
> throws HiveException;
>   void rollbackDropPartition(String storageTableName, List<String> partVals) 
> throws HiveException;
> }
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to