| /** |
| * 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 org.apache.hcatalog.api; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| import java.util.Map; |
| |
| import org.apache.hadoop.hive.metastore.api.FieldSchema; |
| import org.apache.hadoop.hive.metastore.api.Order; |
| import org.apache.hadoop.hive.metastore.api.Table; |
| import org.apache.hcatalog.common.HCatException; |
| import org.apache.hcatalog.data.schema.HCatFieldSchema; |
| import org.apache.hcatalog.data.schema.HCatSchemaUtils; |
| |
| /** |
| * The HCatTable is a wrapper around org.apache.hadoop.hive.metastore.api.Table. |
| */ |
| public class HCatTable { |
| |
| private String tableName; |
| private String tabletype; |
| private List<HCatFieldSchema> cols; |
| private List<HCatFieldSchema> partCols; |
| private List<String> bucketCols; |
| private List<Order> sortCols; |
| private int numBuckets; |
| private String inputFileFormat; |
| private String outputFileFormat; |
| private String storageHandler; |
| private Map<String, String> tblProps; |
| private String dbName; |
| private String serde; |
| private String location; |
| |
| HCatTable(Table hiveTable) throws HCatException { |
| this.tableName = hiveTable.getTableName(); |
| this.dbName = hiveTable.getDbName(); |
| this.tabletype = hiveTable.getTableType(); |
| cols = new ArrayList<HCatFieldSchema>(); |
| for (FieldSchema colFS : hiveTable.getSd().getCols()) { |
| cols.add(HCatSchemaUtils.getHCatFieldSchema(colFS)); |
| } |
| partCols = new ArrayList<HCatFieldSchema>(); |
| for (FieldSchema colFS : hiveTable.getPartitionKeys()) { |
| cols.add(HCatSchemaUtils.getHCatFieldSchema(colFS)); |
| } |
| bucketCols = hiveTable.getSd().getBucketCols(); |
| sortCols = hiveTable.getSd().getSortCols(); |
| numBuckets = hiveTable.getSd().getNumBuckets(); |
| inputFileFormat = hiveTable.getSd().getInputFormat(); |
| outputFileFormat = hiveTable.getSd().getOutputFormat(); |
| storageHandler = hiveTable |
| .getSd() |
| .getParameters() |
| .get(org.apache.hadoop.hive.metastore.api.Constants.META_TABLE_STORAGE); |
| tblProps = hiveTable.getParameters(); |
| serde = hiveTable.getSd().getSerdeInfo().getSerializationLib(); |
| location = hiveTable.getSd().getLocation(); |
| } |
| |
| /** |
| * Gets the table name. |
| * |
| * @return the table name |
| */ |
| public String getTableName() { |
| return tableName; |
| } |
| |
| /** |
| * Gets the db name. |
| * |
| * @return the db name |
| */ |
| public String getDbName() { |
| return dbName; |
| } |
| |
| /** |
| * Gets the columns. |
| * |
| * @return the columns |
| */ |
| public List<HCatFieldSchema> getCols() { |
| return cols; |
| } |
| |
| /** |
| * Gets the part columns. |
| * |
| * @return the part columns |
| */ |
| public List<HCatFieldSchema> getPartCols() { |
| return partCols; |
| } |
| |
| /** |
| * Gets the bucket columns. |
| * |
| * @return the bucket columns |
| */ |
| public List<String> getBucketCols() { |
| return bucketCols; |
| } |
| |
| /** |
| * Gets the sort columns. |
| * |
| * @return the sort columns |
| */ |
| public List<Order> getSortCols() { |
| return sortCols; |
| } |
| |
| /** |
| * Gets the number of buckets. |
| * |
| * @return the number of buckets |
| */ |
| public int getNumBuckets() { |
| return numBuckets; |
| } |
| |
| /** |
| * Gets the storage handler. |
| * |
| * @return the storage handler |
| */ |
| public String getStorageHandler() { |
| return storageHandler; |
| } |
| |
| /** |
| * Gets the table props. |
| * |
| * @return the table props |
| */ |
| public Map<String, String> getTblProps() { |
| return tblProps; |
| } |
| |
| /** |
| * Gets the tabletype. |
| * |
| * @return the tabletype |
| */ |
| public String getTabletype() { |
| return tabletype; |
| } |
| |
| /** |
| * Gets the input file format. |
| * |
| * @return the input file format |
| */ |
| public String getInputFileFormat() { |
| return inputFileFormat; |
| } |
| |
| /** |
| * Gets the output file format. |
| * |
| * @return the output file format |
| */ |
| public String getOutputFileFormat() { |
| return outputFileFormat; |
| } |
| |
| /** |
| * Gets the serde lib. |
| * |
| * @return the serde lib |
| */ |
| public String getSerdeLib(){ |
| return serde; |
| } |
| |
| /** |
| * Gets the location. |
| * |
| * @return the location |
| */ |
| public String getLocation(){ |
| return location; |
| } |
| |
| @Override |
| public String toString() { |
| return "HCatTable [" |
| + (tableName != null ? "tableName=" + tableName + ", " : "tableName=null") |
| + (dbName != null ? "dbName=" + dbName + ", " : "dbName=null") |
| + (tabletype != null ? "tabletype=" + tabletype + ", " : "tabletype=null") |
| + (cols != null ? "cols=" + cols + ", " : "cols=null") |
| + (partCols != null ? "partCols=" + partCols + ", " : "partCols==null") |
| + (bucketCols != null ? "bucketCols=" + bucketCols + ", " : "bucketCols=null") |
| + (sortCols != null ? "sortCols=" + sortCols + ", " : "sortCols=null") |
| + "numBuckets=" |
| + numBuckets |
| + ", " |
| + (inputFileFormat != null ? "inputFileFormat=" |
| + inputFileFormat + ", " : "inputFileFormat=null") |
| + (outputFileFormat != null ? "outputFileFormat=" |
| + outputFileFormat + ", " : "outputFileFormat=null") |
| + (storageHandler != null ? "storageHandler=" + storageHandler |
| + ", " : "storageHandler=null") |
| + (tblProps != null ? "tblProps=" + tblProps + ", " : "tblProps=null") |
| + (serde != null ? "serde=" + serde + ", " : "serde=") |
| + (location != null ? "location=" + location : "location=") + "]"; |
| } |
| } |