Apache Tajo
========================
Tajo is a relational and distributed data warehouse system for Hadoop.
Tajo is designed for low-latency and scalable ad-hoc queries, online
aggregation and ETL on large-data sets by leveraging advanced database
techniques. It supports SQL standards. It has its own query engine which
allows direct control of distributed execution and data flow. As a result,
Tajo has a variety of query evaluation strategies and more optimization
opportunities. In addition, Tajo will have a native columnar execution and
and its optimizer.

Project
=======
* Project Home (http://tajo.apache.org/)
* Source Repository (https://git-wip-us.apache.org/repos/asf/tajo.git)
* Issue Tracking (https://issues.apache.org/jira/browse/TAJO)

License
=======
* Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html)

Documents
=========
* Tajo Wiki (https://cwiki.apache.org/confluence/display/TAJO)
* Getting Started (http://tajo.apache.org/docs/current/getting_started.html)
* Query Language (http://tajo.apache.org/docs/current/sql_language.html)
* Configuration Guide (http://tajo.apache.org/docs/current/configuration.html)
* Backup and Restore Guide (http://tajo.apache.org/docs/current/backup_and_restore.html)
* Functions (http://tajo.apache.org/docs/current/functions.html)
* Tajo Interactive Shell (http://tajo.apache.org/docs/current/cli.html)

Requirements
============
* Java 1.6 or higher
* Hadoop 2.2.0, 2.3.0, and 2.4.0

Mailing lists
=============
* dev@tajo.apache.org     - To discuss and ask general development issues.

* user@tajo.apache.org    - To discuss and ask end-user questions/issues.

* issues@tajo.apache.org  - To see notifications made in the Tajo issue
                            tracking system, review board, and Jenkins CI.

* commits@tajo.apache.org - To monitor commits to the source repository.

To subscribe to the mailing lists, please send an email to:
${listname}-subscribe@tajo.apache.org. For example, to subscribe to
dev, send an email from your desired subscription address to:
dev-subscribe@tajo.apache.org and follow the instructions from there.
