Package org.apache.howl.cli.SemanticAnalysis

Source Code of org.apache.howl.cli.SemanticAnalysis.AddPartitionHook

package org.apache.howl.cli.SemanticAnalysis;

import java.util.Map;

import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.hive.ql.parse.ASTNode;
import org.apache.hadoop.hive.ql.parse.AbstractSemanticAnalyzerHook;
import org.apache.hadoop.hive.ql.parse.HiveSemanticAnalyzerHookContext;
import org.apache.hadoop.hive.ql.parse.SemanticException;
import org.apache.howl.common.HowlConstants;

public class AddPartitionHook extends AbstractSemanticAnalyzerHook{

  private String tblName, inDriver, outDriver;

  @Override
  public ASTNode preAnalyze(HiveSemanticAnalyzerHookContext context, ASTNode ast)
      throws SemanticException {
    Map<String, String> tblProps;
    tblName = ast.getChild(0).getText();
    try {
      tblProps = context.getHive().getTable(tblName).getParameters();
    } catch (HiveException he) {
      throw new SemanticException(he);
    }

    inDriver = tblProps.get(HowlConstants.HOWL_ISD_CLASS);
    outDriver = tblProps.get(HowlConstants.HOWL_OSD_CLASS);

    if(inDriver == null  || outDriver == null){
      throw new SemanticException("Operation not supported. Partitions can be added only in a table created through Howl. It seems table "+tblName+" was not created through Howl.");
    }
    return ast;
  }

//  @Override
//  public void postAnalyze(HiveSemanticAnalyzerHookContext context,
//      List<Task<? extends Serializable>> rootTasks) throws SemanticException {
//
//    try {
//      Hive db = context.getHive();
//      Table tbl = db.getTable(MetaStoreUtils.DEFAULT_DATABASE_NAME, tblName);
//      for(Task<? extends Serializable> task : rootTasks){
//        System.err.println("PArt spec: "+((DDLWork)task.getWork()).getAddPartitionDesc().getPartSpec());
//        Partition part = db.getPartition(tbl,((DDLWork)task.getWork()).getAddPartitionDesc().getPartSpec(),false);
//        Map<String,String> partParams = part.getParameters();
//        if(partParams == null){
//          System.err.println("Part map null ");
//          partParams = new HashMap<String, String>();
//        }
//        partParams.put(InitializeInput.HOWL_ISD_CLASS, inDriver);
//        partParams.put(InitializeInput.HOWL_OSD_CLASS, outDriver);
//        part.getTPartition().setParameters(partParams);
//        db.alterPartition(tblName, part);
//      }
//    } catch (HiveException he) {
//      throw new SemanticException(he);
//    } catch (InvalidOperationException e) {
//      throw new SemanticException(e);
//    }
//  }
}


TOP

Related Classes of org.apache.howl.cli.SemanticAnalysis.AddPartitionHook

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.