Jaql
Jaql (JAQL) はJSONで格納されたビッグデータに対する問い合わせ処理を目的とした、関数型データ処理およびクエリ言語で…
| パラダイム | 関数型プログラミング |
|---|---|
| 登場時期 | 2008年10月9日 |
| 設計者 | Vuk Ercegovac (Google) |
| 最新リリース | 0.5.1/ 2010年7月12日 |
| 主な処理系 | IBM BigInsights |
| プログラミング言語 | Java |
| プラットフォーム | Cross-platform |
| ライセンス | Apache License 2.0 |
| ウェブサイト |
code |
Jaql (JAQL) はJSONで格納されたビッグデータに対する問い合わせ処理を目的とした、関数型データ処理およびクエリ言語である。
Google[1]のオープンソースプロジェクトとして開始されたが、最新のリリースは2010年7月12日. IBM[2]はBigInsightsというHadoopソフトウェア・パッケージの処置言語として、Jaqlを採用した。
また、JSON のみならず CSV、TSV、XMLなどにも対応する。
A[3] によると、PIG Latin and Hive QL などの他の問い合わせ言語に比べても、遜色のないパフォーマンスを打ち出している。
文法
JAQLの基本的な文法
source -> operator(parameter) -> sink ;
ここでsinkは演算元ともなり得る。 したがって、通常、JAQLプログラムは、データ処理グラフを表現して、次の構造をとる必要がある。
source -> operator1(parameter) -> operator2(parameter) -> operator2(parameter) -> operator3(parameter) -> operator4(parameter) -> sink ;
一般的には以下のように、矢印の後にJAQLプログラムを改行させて読みやすくする。これはTwitter SCALDINGの共通のイディオムでもあります。
source -> operator1(parameter)
-> operator2(parameter)
-> operator2(parameter)
-> operator3(parameter)
-> operator4(parameter)
-> sink ;
基本的な演算[5]
EXPAND
EXPAND式を使用して、ネストされた配列をフラット化します。 この式は、ネストされた配列Tの配列を入力として受け取り、各ネストされた配列の要素を最上位の出力配列に昇格させることによって出力配列[T]を生成します。
FILTER
FILTER演算子を使用して、指定された入力配列から要素を除外します。 この演算子は、型Tの要素の配列を入力として受け取り、同じ型の配列を出力し、述語が真と評価される要素を保持します。 これは、SQL言語のWHERE句に相当します。
例:
data = [
{name: "Jon Doe", income: 20000, mgr: false},
{name: "Vince Wayne", income: 32500, mgr: false},
{name: "Jane Dean", income: 72000, mgr: true},
{name: "Alex Smith", income: 25000, mgr: false}
];
data -> filter $.mgr;
[
{
"income": 72000,
"mgr": true,
"name": "Jane Dean"
}
]
data -> filter $.income < 30000;
[
{
"income": 20000,
"mgr": false,
"name": "Jon Doe"
},
{
"income": 25000,
"mgr": false,
"name": "Alex Smith"
}
]
GROUP
GROUP式を使用して、1つまたは複数の入力配列をグループ化キーにグループ化し、グループごとに集計関数を適用します。
JOIN
JOIN演算子を使用して、2つ以上の入力配列間の結合を表現します。 この演算子は、natural、left-outer、right-outer、outer joinsを含む複数のタイプの結合をサポートします。
SORT
入力を1つ以上のフィールドでソートするにはSORT演算子を使用します。
TOP
TOP式は、入力の最初の個の要素を選択します。 コンパレータが提供されている場合、出力は入力をソートし、最初の個の要素を選択することと意味的に同じです。
TRANSFORM
TRANSFORM演算子を使用すると、プロジェクションを実現したり、出力のすべての項目に関数を適用できます。
参照
外部リンク
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.