/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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. * See the License for the specific language governing permissions and * limitations under the License. */ package gobblin.compliance; import java.util.List; import java.util.Map; import java.util.Properties; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.ql.metadata.Partition; import com.google.common.base.Optional; import gobblin.dataset.Dataset; import gobblin.hive.HiveSerDeWrapper; /** * A class to represent Hive Partition Dataset object used for gobblin-compliance * * @author adsharma */ public class HivePartitionDataset implements Dataset { private Partition hivePartition; public HivePartitionDataset(Partition partition) { this.hivePartition = partition; } public HivePartitionDataset(HivePartitionDataset hivePartitionDataset) { this.hivePartition = hivePartitionDataset.hivePartition; } /** * Will return complete partition name i.e. dbName@tableName@partitionName */ @Override public String datasetURN() { return this.hivePartition.getCompleteName(); } public Path getLocation() { return this.hivePartition.getDataLocation(); } public Path getTableLocation() { return this.hivePartition.getTable().getDataLocation(); } public String getTableName() { return this.hivePartition.getTable().getTableName(); } public String getDbName() { return this.hivePartition.getTable().getDbName(); } public String getName() { return this.hivePartition.getName(); } public Map<String, String> getSpec() { return this.hivePartition.getSpec(); } public Map<String, String> getTableParams() { return this.hivePartition.getTable().getParameters(); } public Map<String, String> getParams() { return this.hivePartition.getParameters(); } public Properties getTableMetadata() { return this.hivePartition.getTable().getMetadata(); } public List<FieldSchema> getCols() { return this.hivePartition.getTable().getCols(); } public Optional<String> getFileFormat() { String serdeLib = this.hivePartition.getTPartition().getSd().getSerdeInfo().getSerializationLib(); for (HiveSerDeWrapper.BuiltInHiveSerDe hiveSerDe : HiveSerDeWrapper.BuiltInHiveSerDe.values()) { if (hiveSerDe.toString().equalsIgnoreCase(serdeLib)) { return Optional.fromNullable(hiveSerDe.name()); } } return Optional.<String>absent(); } /** * @return the owner of the corresponding hive table */ public Optional<String> getOwner() { return Optional.fromNullable(this.hivePartition.getTable().getOwner()); } }