Apache MRQL 0.9.0
=================

MRQL (pronounced miracle) is a query processing and optimization
system for large-scale, distributed data analysis. MRQL (the MapReduce
Query Language) is an SQL-like query language for large-scale data
analysis on a cluster of computers. The MRQL query processing system
can evaluate MRQL queries in three modes:

* in Map-Reduce mode using Apache Hadoop,
* in BSP mode (Bulk Synchronous Parallel mode) using Apache Hama, and
* in Spark mode using Apache Spark.

The MRQL query language is powerful enough to express most common data
analysis tasks over many forms of raw in-situ data, such as XML and
JSON documents, binary files, and CSV documents. MRQL is more powerful
than other current high-level MapReduce languages, such as Hive and
PigLatin, since it can operate on more complex data and supports more
powerful query constructs, thus eliminating the need for using
explicit MapReduce code. With MRQL, users are able to express complex
data analysis tasks, such as PageRank, k-means clustering, matrix
factorization, etc, using SQL-like queries exclusively, while the MRQL
query processing system is able to compile these queries to efficient
Java code.

General Info
============

For the latest information about MRQL, please visit our website at:

   http://mrql.incubator.apache.org/

and our wiki, at:

   http://wiki.apache.org/mrql/

Getting Started
===============

- Installation Instructions and a quick tutorial:
  http://wiki.apache.org/mrql/GettingStarted

Useful mailing lists
====================

1. user@mrql.incubator.apache.org - To discuss and ask usage questions. Send an
   empty email to user-subscribe@mrql.incubator.apache.org in order to subscribe
   to this mailing list.

2. dev@mrql.incubator.apache.org - For discussions about code, design and features.
   Send an empty email to dev-subscribe@mrql.incubator.apache.org in order to
   subscribe to this mailing list.

3. commits@mrql.incubator.apache.org - In order to monitor commits to the source
   repository. Send an empty email to commits-subscribe@mrql.incubator.apache.org
   in order to subscribe to this mailing list.
