Package org.apache.hcatalog.common

Examples of org.apache.hcatalog.common.HCatException


        }
    }

    public void append(final HCatFieldSchema hfs) throws HCatException {
        if (hfs == null)
            throw new HCatException("Attempt to append null HCatFieldSchema in HCatSchema.");

        String fieldName = hfs.getName();
        if (fieldPositionMap.containsKey(fieldName))
            throw new HCatException("Attempt to append HCatFieldSchema with already " +
                "existing name: " + fieldName + ".");

        this.fieldSchemas.add(hfs);
        this.fieldNames.add(fieldName);
        this.fieldPositionMap.put(fieldName, this.size() - 1);
View Full Code Here


    }

    public void remove(final HCatFieldSchema hcatFieldSchema) throws HCatException {

        if (!fieldSchemas.contains(hcatFieldSchema)) {
            throw new HCatException("Attempt to delete a non-existent column from HCat Schema: " + hcatFieldSchema);
        }

        fieldSchemas.remove(hcatFieldSchema);
        fieldPositionMap.remove(hcatFieldSchema);
        fieldNames.remove(hcatFieldSchema.getName());
View Full Code Here

    }

    private static void assertTypeInCategory(Type type, Category category, String fieldName) throws HCatException {
        Category typeCategory = Category.fromType(type);
        if (typeCategory != category) {
            throw new HCatException("Type category mismatch. Expected " + category + " but type " + type + " in category " + typeCategory + " (field " + fieldName + ")");
        }
    }
View Full Code Here

    }

    private static void assertTypeNotInCategory(Type type, Category category) throws HCatException {
        Category typeCategory = Category.fromType(type);
        if (typeCategory == category) {
            throw new HCatException("Type category mismatch. Expected type " + type + " not in category " + category + " but was so.");
        }
    }
View Full Code Here

//      }
//      doHarCheck(fs,harFile);
//      LOG.info("Nuking " + dir);
            fs.delete(new Path(dir), true);
        } catch (Exception e) {
            throw new HCatException("Error creating Har [" + harFile + "] from [" + dir + "]", e);
        }
    }
View Full Code Here

            List<String> indexList = client.listIndexNames(outputJobInfo.getDatabaseName(), outputJobInfo.getTableName(), Short.MAX_VALUE);

            for (String indexName : indexList) {
                Index index = client.getIndex(outputJobInfo.getDatabaseName(), outputJobInfo.getTableName(), indexName);
                if (!index.isDeferredRebuild()) {
                    throw new HCatException(ErrorType.ERROR_NOT_SUPPORTED, "Store into a table with an automatic index from Pig/Mapreduce is not supported");
                }
            }
            StorageDescriptor sd = table.getTTable().getSd();

            if (sd.isCompressed()) {
                throw new HCatException(ErrorType.ERROR_NOT_SUPPORTED, "Store into a compressed partition from Pig/Mapreduce is not supported");
            }

            if (sd.getBucketCols() != null && !sd.getBucketCols().isEmpty()) {
                throw new HCatException(ErrorType.ERROR_NOT_SUPPORTED, "Store into a partition with bucket definition from Pig/Mapreduce is not supported");
            }

            if (sd.getSortCols() != null && !sd.getSortCols().isEmpty()) {
                throw new HCatException(ErrorType.ERROR_NOT_SUPPORTED, "Store into a partition with sorted column definition from Pig/Mapreduce is not supported");
            }

            if (table.getTTable().getPartitionKeysSize() == 0) {
                if ((outputJobInfo.getPartitionValues() != null) && (!outputJobInfo.getPartitionValues().isEmpty())) {
                    // attempt made to save partition values in non-partitioned table - throw error.
                    throw new HCatException(ErrorType.ERROR_INVALID_PARTITION_VALUES,
                        "Partition values specified for non-partitioned table");
                }
                // non-partitioned table
                outputJobInfo.setPartitionValues(new HashMap<String, String>());

            } else {
                // partitioned table, we expect partition values
                // convert user specified map to have lower case key names
                Map<String, String> valueMap = new HashMap<String, String>();
                if (outputJobInfo.getPartitionValues() != null) {
                    for (Map.Entry<String, String> entry : outputJobInfo.getPartitionValues().entrySet()) {
                        valueMap.put(entry.getKey().toLowerCase(), entry.getValue());
                    }
                }

                if ((outputJobInfo.getPartitionValues() == null)
                    || (outputJobInfo.getPartitionValues().size() < table.getTTable().getPartitionKeysSize())) {
                    // dynamic partition usecase - partition values were null, or not all were specified
                    // need to figure out which keys are not specified.
                    List<String> dynamicPartitioningKeys = new ArrayList<String>();
                    boolean firstItem = true;
                    for (FieldSchema fs : table.getPartitionKeys()) {
                        if (!valueMap.containsKey(fs.getName().toLowerCase())) {
                            dynamicPartitioningKeys.add(fs.getName().toLowerCase());
                        }
                    }

                    if (valueMap.size() + dynamicPartitioningKeys.size() != table.getTTable().getPartitionKeysSize()) {
                        // If this isn't equal, then bogus key values have been inserted, error out.
                        throw new HCatException(ErrorType.ERROR_INVALID_PARTITION_VALUES, "Invalid partition keys specified");
                    }

                    outputJobInfo.setDynamicPartitioningKeys(dynamicPartitioningKeys);
                    String dynHash;
                    if ((dynHash = conf.get(HCatConstants.HCAT_DYNAMIC_PTN_JOBID)) == null) {
                        dynHash = String.valueOf(Math.random());
//              LOG.info("New dynHash : ["+dynHash+"]");
//            }else{
//              LOG.info("Old dynHash : ["+dynHash+"]");
                    }
                    conf.set(HCatConstants.HCAT_DYNAMIC_PTN_JOBID, dynHash);

                }

                outputJobInfo.setPartitionValues(valueMap);
            }

            HCatSchema tableSchema = HCatUtil.extractSchema(table);
            StorerInfo storerInfo =
                InternalUtil.extractStorerInfo(table.getTTable().getSd(), table.getParameters());

            List<String> partitionCols = new ArrayList<String>();
            for (FieldSchema schema : table.getPartitionKeys()) {
                partitionCols.add(schema.getName());
            }

            HCatStorageHandler storageHandler = HCatUtil.getStorageHandler(conf, storerInfo);

            //Serialize the output info into the configuration
            outputJobInfo.setTableInfo(HCatTableInfo.valueOf(table.getTTable()));
            outputJobInfo.setOutputSchema(tableSchema);
            harRequested = getHarRequested(hiveConf);
            outputJobInfo.setHarRequested(harRequested);
            maxDynamicPartitions = getMaxDynamicPartitions(hiveConf);
            outputJobInfo.setMaximumDynamicPartitions(maxDynamicPartitions);

            HCatUtil.configureOutputStorageHandler(storageHandler, conf, outputJobInfo);

            Path tblPath = new Path(table.getTTable().getSd().getLocation());

            /*  Set the umask in conf such that files/dirs get created with table-dir
            * permissions. Following three assumptions are made:
            * 1. Actual files/dirs creation is done by RecordWriter of underlying
            * output format. It is assumed that they use default permissions while creation.
            * 2. Default Permissions = FsPermission.getDefault() = 777.
            * 3. UMask is honored by underlying filesystem.
            */

            FsPermission.setUMask(conf, FsPermission.getDefault().applyUMask(
                tblPath.getFileSystem(conf).getFileStatus(tblPath).getPermission()));

            if (Security.getInstance().isSecurityEnabled()) {
                Security.getInstance().handleSecurity(credentials, outputJobInfo, client, conf, harRequested);
            }
        } catch (Exception e) {
            if (e instanceof HCatException) {
                throw (HCatException) e;
            } else {
                throw new HCatException(ErrorType.ERROR_SET_OUTPUT, e);
            }
        } finally {
            HCatUtil.closeHiveClientQuietly(client);
        }
    }
View Full Code Here

        dynamicPartitioningUsed = jobInfo.isDynamicPartitioningUsed();
        dynamicPartCols = jobInfo.getPosOfDynPartCols();
        maxDynamicPartitions = jobInfo.getMaxDynamicPartitions();

        if ((partColsToDel == null) || (dynamicPartitioningUsed && (dynamicPartCols == null))) {
            throw new HCatException("It seems that setSchema() is not called on " +
                "HCatOutputFormat. Please make sure that method is called.");
        }


        if (!dynamicPartitioningUsed) {
View Full Code Here

            }

            String dynKey = dynamicPartValues.toString();
            if (!baseDynamicWriters.containsKey(dynKey)) {
                if ((maxDynamicPartitions != -1) && (baseDynamicWriters.size() > maxDynamicPartitions)) {
                    throw new HCatException(ErrorType.ERROR_TOO_MANY_DYNAMIC_PTNS,
                        "Number of dynamic partitions being created "
                            + "exceeds configured max allowable partitions["
                            + maxDynamicPartitions
                            + "], increase parameter ["
                            + HiveConf.ConfVars.DYNAMICPARTITIONMAXPARTS.varname
View Full Code Here

                    (short) -1);

                // Default to 100,000 partitions if hive.metastore.maxpartition is not defined
                int maxPart = hiveConf.getInt("hcat.metastore.maxpartitions", 100000);
                if (parts != null && parts.size() > maxPart) {
                    throw new HCatException(ErrorType.ERROR_EXCEED_MAXPART, "total number of partitions is " + parts.size());
                }

                // populate partition info
                for (Partition ptn : parts) {
                    HCatSchema schema = HCatUtil.extractSchema(
View Full Code Here

     * @throws IOException the IO exception
     */
    public static OutputJobInfo getJobInfo(Configuration conf) throws IOException {
        String jobString = conf.get(HCatConstants.HCAT_KEY_OUTPUT_INFO);
        if (jobString == null) {
            throw new HCatException(ErrorType.ERROR_NOT_INITIALIZED);
        }

        return (OutputJobInfo) HCatUtil.deserialize(jobString);
    }
View Full Code Here

TOP

Related Classes of org.apache.hcatalog.common.HCatException

Copyright © 2018 www.massapicom. 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.