gobblin.hive.metastore.HiveMetaStoreEventHelper Maven / Gradle / Ivy
 The newest version!
        
        /*
 *
 * Copyright (C) 2014-2016 LinkedIn Corp. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use
 * this file except in compliance with the License. You may obtain a copy of the
 * License at  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed
 * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied.
 */
package gobblin.hive.metastore;
import java.util.List;
import java.util.Map;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableMap;
import gobblin.hive.HivePartition;
import gobblin.hive.HiveTable;
import gobblin.hive.spec.HiveSpec;
import gobblin.metrics.event.EventSubmitter;
/**
 * Helper class to populate hive registration event in state.
 */
public class HiveMetaStoreEventHelper {
  
  public static final String SUCCESS_POSTFIX = "Succeed";
  public static final String FAILED_POSTFIX = "Failed";
  
  public static final String DB_NAME = "DBName";
  public static final String TABLE_NAME = "TableName";
  public static final String PARTITIONS = "Partitions";
  public static final String ERROR_MESSAGE = "ErrorMessage";
  public static final String PATH_REGISTRATION = "PathRegistration";
  public static final String DB_CREATION = "DBCreation";
  public static final String TABLE_CREATION = "TableCreation";
  public static final String TABLE_DROP = "TableDrop";
  public static final String TABLE_ALTER = "TableAlter";
  
  public static final String PARTITION_CREATION = "PartitionCreation";
  public static final String PARTITION_DROP = "PartitionDrop";
  public static final String PARTITION_ALTER = "PartitionAlter";
  
  // Path Registration
  protected static void submitSuccessfulPathRegistration(EventSubmitter eventSubmitter, HiveSpec spec) {
    eventSubmitter.submit(PATH_REGISTRATION + SUCCESS_POSTFIX,
        getAdditionalMetadata(spec, Optional. absent()));
  }
  protected static void submitFailedPathRegistration(EventSubmitter eventSubmitter, HiveSpec spec, Exception error) {
    eventSubmitter.submit(PATH_REGISTRATION + FAILED_POSTFIX,
        getAdditionalMetadata(spec, Optional. of(error)));
  }
  private static Map getAdditionalMetadata(HiveSpec spec,
      Optional error) {
    ImmutableMap.Builder builder =
        ImmutableMap. builder().put(DB_NAME, spec.getTable().getDbName())
            .put(TABLE_NAME, spec.getTable().getTableName()).put("Path", spec.getPath().toString());
    
    if(spec.getPartition().isPresent()){
      builder.put(PARTITIONS, spec.getPartition().get().toString());
    }
    if (error.isPresent()) {
      builder.put(ERROR_MESSAGE, error.get().getMessage());
    }
    return builder.build();
  }
  private static Map getAdditionalMetadata(HiveTable table,
      Optional partition, Optional error) {
    ImmutableMap.Builder builder =
        ImmutableMap. builder().put(DB_NAME, table.getDbName()).put(TABLE_NAME, table.getTableName());
    if (table.getLocation().isPresent()) {
      builder.put("Location", table.getLocation().get());
    }
    if (partition.isPresent()) {
      builder.put("Partition", partition.get().toString());
    }
    if (error.isPresent()) {
      builder.put(ERROR_MESSAGE, error.get().getMessage());
    }
    return builder.build();
  }
  // DB Creation
  protected static void submitSuccessfulDBCreation(EventSubmitter eventSubmitter, String dbName) {
    eventSubmitter.submit(DB_CREATION+SUCCESS_POSTFIX, ImmutableMap.of(DB_NAME, dbName));
  }
  protected static void submitFailedDBCreation(EventSubmitter eventSubmitter, String dbName, Exception error) {
    eventSubmitter.submit(DB_CREATION+FAILED_POSTFIX,
        ImmutableMap. builder().put(DB_NAME, dbName).put(ERROR_MESSAGE, error.getMessage()).build());
  }
  // Table Creation
  protected static void submitSuccessfulTableCreation(EventSubmitter eventSubmitter, HiveTable table) {
    eventSubmitter.submit(TABLE_CREATION+SUCCESS_POSTFIX, getAdditionalMetadata(table,
        Optional. absent(), Optional. absent()));
  }
  protected static void submitFailedTableCreation(EventSubmitter eventSubmitter, HiveTable table, Exception error) {
    eventSubmitter.submit(TABLE_CREATION+FAILED_POSTFIX, getAdditionalMetadata(table,
        Optional. absent(), Optional. of(error)));
  }
  // Add partition
  protected static void submitSuccessfulPartitionAdd(EventSubmitter eventSubmitter, HiveTable table,
      HivePartition partition) {
    eventSubmitter.submit(PARTITION_CREATION+SUCCESS_POSTFIX, getAdditionalMetadata(table,
        Optional. of(partition), Optional. absent()));
  }
  protected static void submitFailedPartitionAdd(EventSubmitter eventSubmitter, HiveTable table,
      HivePartition partition, Exception error) {
    eventSubmitter.submit(PARTITION_CREATION+FAILED_POSTFIX, getAdditionalMetadata(table,
        Optional. of(partition), Optional. of(error)));
  }
  // Drop Table
  protected static void submitSuccessfulTableDrop(EventSubmitter eventSubmitter, String dbName, String tableName) {
    eventSubmitter.submit(TABLE_DROP+SUCCESS_POSTFIX,
        ImmutableMap. builder().put(DB_NAME, dbName).put(TABLE_NAME, tableName).build());
  }
  protected static void submitFailedTableDrop(EventSubmitter eventSubmitter, String dbName, String tableName,
      Exception e) {
    eventSubmitter.submit(TABLE_DROP+FAILED_POSTFIX, ImmutableMap. builder().put(DB_NAME, dbName)
        .put(TABLE_NAME, tableName).put(ERROR_MESSAGE, e.getMessage()).build());
  }
  // Drop partition
  protected static void submitSuccessfulPartitionDrop(EventSubmitter eventSubmitter, String dbName, String tableName,
      List partitionValues) {
    eventSubmitter.submit(PARTITION_DROP+SUCCESS_POSTFIX, ImmutableMap. builder().put(DB_NAME, dbName)
        .put(TABLE_NAME, tableName).put("PartitionValues", partitionValues.toString()).build());
  }
  protected static void submitFailedPartitionDrop(EventSubmitter eventSubmitter, String dbName, String tableName,
      List partitionValues, Exception error) {
    eventSubmitter.submit(PARTITION_DROP+FAILED_POSTFIX,
        ImmutableMap. builder().put(DB_NAME, dbName).put(TABLE_NAME, tableName)
            .put("PartitionValues", partitionValues.toString()).put(ERROR_MESSAGE, error.getMessage()).build());
  }
  // Alter Table
  protected static void submitSuccessfulTableAlter(EventSubmitter eventSubmitter, HiveTable table) {
    eventSubmitter.submit(TABLE_ALTER+SUCCESS_POSTFIX, getAdditionalMetadata(table,
        Optional. absent(), Optional. absent()));
  }
  protected static void submitFailedTableAlter(EventSubmitter eventSubmitter, HiveTable table, Exception error) {
    eventSubmitter.submit(TABLE_ALTER+FAILED_POSTFIX, getAdditionalMetadata(table,
        Optional. absent(), Optional. of(error)));
  }
  // Alter partition
  protected static void submitSuccessfulPartitionAlter(EventSubmitter eventSubmitter, HiveTable table,
      HivePartition partition) {
    eventSubmitter.submit(PARTITION_ALTER+SUCCESS_POSTFIX, getAdditionalMetadata(table,
        Optional. of(partition), Optional. absent()));
  }
  protected static void submitFailedPartitionAlter(EventSubmitter eventSubmitter, HiveTable table,
      HivePartition partition, Exception error) {
    eventSubmitter.submit(PARTITION_ALTER+FAILED_POSTFIX, getAdditionalMetadata(table,
        Optional. of(partition), Optional. of(error)));
  }
}
                                      © 2015 - 2025 Weber Informatics LLC | Privacy Policy