-
Jaql is a loosely typed functional language,
with lazy evaluation. It's part of BigInsights,
-
IBM's Hadoop based Big Data platform.
-
The initial inspiration for Jaql was a JSON
Query Language that provided query processing
-
for semi-structured data, particularly nested
data represented using the Jaql Data Model
-
or JDM
-
The JDM is a superset of JSON, a standard
data model, that is similar to XML but much
-
easier to work with.
-
Jaql provides a complete solution environment
and integration point for all the data storage,
-
functions and capabilities of BigInsights;
including flexible access to data and analytics.
-
Jaql is the functional language that glues
it all together.
-
It also provides ways to reach out to external
data and services such as relational databases,
-
indexing services, text analytics, machine
learning and so on.
-
Jaql provides an elegant programming model
for developing complex and reusable queries
-
and transformations against JSON data structures;
even very deeply nested data structures.
-
As with SQL, Jaql is a declarative query language
so you focus on what you want to achieve,
-
not how it's done.
-
Under the hood, Jaql automatically exploits
the massive parallelism of MapReduce. You
-
don't have to worry about the complexities
of MapReduce programming.
-
Jaql is an extensible language. It provides
native functions and modules, that allow you
-
to build up packages of re-usable logic that
can be shared throughout your environment.
-
So, when would you choose Jaql instead of
another language?
-
1. Jaql is a good choice when your data is
deeply nested, representing complex relationships.
-
Jaql can work with arbitrarily nested data
and can even handle data that varies in structure
-
and content from record to record.
-
2. Jaql is a good choice when you need to
combine programming models because it offers
-
both the core Jaql syntax and you can embed
SQL within your Jaql – that's like combining
-
Hive and Pig together into one language
-
3. Jaql is a good choice when you need a modular
language that lets you write native functions.
-
You can parameterize and encapsulate any functionality
of the language. and then package those functions
-
into reusable modules to be shared across
all of your applications.
-
4. Jaql is also a good choice when you need
a full programming language with both flow-control
-
and native functions and modules. You can
develop full programs from the ground up using
-
JAQL without requiring the use of another
programming language to orchestrate your logic,
-
which is particularly important for data flows.