.\" 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.
.\"
.\" Process this file with
.\" groff -man -Tascii hcatalog.1
.\"
.TH hcatalog 1 "October 2010 " Linux "User Manuals"

.SH NAME
Apache Hcatalog \- Data warehouse infrastructure built atop  Apache Hadoop.

.SH SYNOPSIS

.B hcat
[options] -e[xecute] "<query>"

.B hcat
[options] [-f[ile]] file : DDL commands it needs to execute

.SH DESCRIPTION
Apache HCatalog is a table and storage management layer for Apache Hadoop 
that enables users with different data processing tools – Apache Pig, 
Apache MapReduce, and Apache Hive – to more easily read and write data 
on the grid. Apache HCatalog’s table abstraction presents users with a 
relational view of data in the Hadoop distributed file system (HDFS) 
and ensures that users need not worry about where or in what format their 
data is stored – RCFile format, text files, or sequence files.

Apache HCatalog supports reading and writing files in any format for which 
a SerDe can be written. By default, HCatalog supports RCFile, CSV, 
JSON, and sequence file formats. To use a custom format, you must 
provide the InputFormat, OutputFormat, and SerDe.

For more information about Apache Hcatalog, see http://incubator.apache.org/hcatalog/

.SH OPTIONS

.IP "-g"
Usage is -g mygroup ...This indicates to Apache HCatalog that table that needs 
to be created must have group "mygroup"

.IP "-p"
Usage is -p rwxr-xr-x ...This indicates to Apache HCatalog that table that needs 
to be created must have permissions "rwxr-xr-x"

.IP "-D"
Usage is -Dkey=value ...The key value pair is passed to Apache HCatalog as a 
Java System Property.

.IP "-e"
Usage is -e 'create table mytable(a int);'...This indicates to Apache HCatalog 
to treat the following string as a DDL command and execute it.

.IP "-f"
Usage is -f myscript.hcatalog ...This indicates to Apache HCatalog that 
myscript.hcatalog is a file which contains DDL commands it needs to execute.

.SH COPYRIGHT
Copyright (C) 2010 The Apache Software Foundation. All rights reserved.
