クエリAPI¶
クエリについての詳細はクエリをご覧ください。
クエリ発行(HiveQL)¶
HiveQLクエリを実行します。
クエリ実行中は、一時ファイルとしてDAGストレージの出力先バケットに
tmp_$folder$
およびtmp/
で始まる複数のオブジェクトが置かれます。同時に実行可能なクエリの数は、
クラスタのインスタンス数 - 1
個です。それを超えるクエリを実行しようとした場合はエラーとなります。- クエリの実行結果は、 outputResourcePath で指定された場所に出力されます。
- 実行したクエリの内容によって、複数のオブジェクトが出力されます。
- outputResourcePath配下に既存オブジェクトが存在する場合、全て削除した上でクエリ結果のオブジェクトを配置します。
クエリ発行(HiveQL)APIについての詳細はクエリ発行(HiveQL)APIをご覧ください。
リクエスト情報¶
シンタックス¶
POST /v1/?select HTTP1.1
Host: analysis-dag.iijgio.com
Date: {date}
Authorization: {authorization string}
{
"label" : {label},
"outputFormat" : {output data format},
"outputResourcePath" : {output resource path},
"query" : {HiveQL},
"clusterName": {cluster name}
}
リクエストパラメータ¶
この操作では以下のリクエストパラメータを使用します。
パラメータ名 | 説明 | 必須 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
clusterName |
|
○ | ||||||||
query |
|
○ | ||||||||
outputResourcePath |
|
○ | ||||||||
label |
|
☓ | ||||||||
outputFormat |
|
レスポンス情報¶
レスポンスボディ¶
この操作では以下のレスポンスボディを返します。
名前 | 説明 | ||
---|---|---|---|
queryId |
|
エラー情報¶
この操作では以下のエラーを返します。
コード | 内容 | ステータス |
---|---|---|
InvalidClusterState | 操作出来ないクラスタのステータスです。 | 400 Bad Request |
InvalidClusterName | 指定されたクラスタ名が不正です。 | 400 Bad Request |
InvalidDatabaseName | 指定されたデータベース名が不正です。 | 400 Bad Request |
InvalidTableName | 指定されたテーブル名が不正です。 | 400 Bad Request |
InvalidOutputFormat | outputFormatに指定された値が不正です。 | 400 Bad Request |
InvalidOutputResourcePath | outputResourcePathに指定された値が不正です。 | 400 Bad Request |
LabelIsTooLong | 指定されたラベルが長すぎます。 | 400 Bad Request |
TooManyQueries | 指定されたクラスタでインスタンス数-1個のクエリが既に実行中です。 | 400 Bad Request |
StorageAccessError | ストレージへのアクセスに失敗しました。 | 400 Bad Request |
InvalidDMLStatement | 指定されたHiveQL文が不正です。 | 400 Bad Request |
ClusterNotFound | 存在しないクラスタ名が指定されました。 | 404 Not Found |
OutputBucketIsNotFound | outputResourcePathに指定されたバケットが存在しません。 | 404 Not Found |
InputBucketIsNotFound | FROM句に指定されたデータベース名のバケットが存在しません。 | 404 Not Found |
サンプル¶
- sampleCluster1クラスタにHiveQLクエリを投入するサンプル
- リクエスト
POST /v1/?select HTTP1.1 Host: analysis-dag.iijgio.com Content-Length: 233 Date: Wed, 25 Nov 2009 12:00:00 GMT Authorization: IIJGIO 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE= { "label" : "サンプルクエリ", "outputFormat" : "csv", "outputResourcePath" : "dag://sampledb/sample_outdir/", "query" : "SELECT time/60, avg(v['size']) FROM sampledb.samletbl GROUP BY 1 ORDER BY 1", "clusterName": "sampleCluster1" }
- レスポンス
HTTP/1.1 202 Accepted Date: Wed, 25 Nov 2009 12:00:00 GMT Server: IIJAnalysisDag x-iijgio-request-id: YgIPIfBiKa2bj0KMgUAdQkf3ShJTOOpXUueF6QKo Content-Type: application/json Content-Length: 30 Connection: close { "queryId" : 2497 }
クエリ発行(Split)¶
1つ以上の巨大なオブジェクトを100MBごとのオブジェクトに分割し、DAGストレージに出力します。
同じ巨大なオブジェクトを入力としたHiveQLクエリを繰り返し実行する場合、本APIを用いて事前に分割処理を行うことでHiveQLクエリの実行時間を短縮できる場合があります。
クエリ発行(Split)APIについての詳細はクエリ発行(Split)APIをご覧ください。
リクエスト情報¶
シンタックス¶
POST /v1/?split HTTP1.1
Host: analysis-dag.iijgio.com
Date: {date}
Authorization: {authorization string}
{
"label" : {label},
"inputObjectKeys" : [
{object key},
{object key}
],
"inputFormat" : {input format},
"schema": {schema},
"outputDatabase" : {output database},
"outputTable" : {output table},
"clusterName": {cluster name}
}
リクエストパラメータ¶
この操作ではリクエストパラメータは使用しません。
リクエストボディ¶
この操作では以下リクエストボディを使用します。
パラメータ名 | 説明 | 必須 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
clusterName |
|
○ | ||||||||
inputObjectKeys |
|
○ | ||||||||
outputDatabase |
|
○ | ||||||||
outputTable |
|
○ | ||||||||
inputFormat |
|
☓ | ||||||||
schema |
|
☓ | ||||||||
label |
|
☓ |
レスポンス情報¶
レスポンスボディ¶
この操作では以下のレスポンスボディを返します。
名前 | 説明 | ||
---|---|---|---|
queryId |
|
エラー情報¶
この操作では以下のエラーを返します。
コード | 内容 | ステータス |
---|---|---|
InvalidClusterState | 操作出来ないクラスタのステータスです。 | 400 Bad Request |
InvalidClusterName | 指定されたクラスタ名が不正です。 | 400 Bad Request |
InvalidDatabaseName | 指定されたデータベース名が不正です。 | 400 Bad Request |
InvalidTableName | 指定されたテーブル名が不正です。 | 400 Bad Request |
InvalidInputFormat | 指定されたformatの値が不正です。 | 400 Bad Request |
InvalidFormat | 指定されたformatの値が不正です。 | 400 Bad Request |
LabelIsTooLong | 指定されたラベルが長すぎます。 | 400 Bad Request |
TooManyQueries | 指定されたクラスタでインスタンス数-1個のクエリが既に実行中です。 | 400 Bad Request |
StorageAccessError | ストレージへのアクセスに失敗しました。 | 400 Bad Request |
InvalidInputObjectKeys | inputObjectKeysに指定された値が不正です。 | 400 Bad Request |
InvalidInputFormat | 指定されたformatの値が不正です。 | 400 Bad Request |
InvalidSchema | 指定されたschemaの値が不正です。 | 400 Bad Request |
InvalidDDLStatement | 使用できないschemaが指定されました。 | 400 Bad Request |
OutputTableAlreadyExists | outputTableに指定されたテーブルが既に存在します。 | 400 Bad Request |
ClusterNotFound | 存在しないクラスタ名が指定されました。 | 404 Not Found |
DatabaseNotFound | 存在しないデータベースが指定されました。 | 404 Not Found |
OutputBucketIsNotFound | outputResourcePathに指定されたバケットが存在しません。 | 404 Not Found |
InputBucketIsNotFound | inputObjectKeysに指定されたバケットが存在しません。 | 404 Not Found |
InputObjectNotFound | inputObjectKeysに指定されたオブジェクトが存在しません。 | 404 Not Found |
サンプル¶
- sampleCluster1クラスタにSplitクエリを投入するサンプル
- リクエスト
POST /v1/?split HTTP1.1 Host: analysis-dag.iijgio.com Content-Length: 233 Date: Wed, 25 Nov 2009 12:00:00 GMT Authorization: IIJGIO 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE= { "label" : "サンプルクエリ", "inputObjectKeys" : [ "dag://sampledb/sample_input/bigCSVObject1", "dag://sampledb/sample_input/bigCSVObject2", "dag://sampledb/sample_input/bigCSVObject3" ], "inputFormat" : "csv", "outputDatabase" : "sampledb", "outputTable" : "split_tbl", "clusterName": "sampleCluster1" }
- レスポンス
HTTP/1.1 202 Accepted Date: Wed, 25 Nov 2009 12:00:00 GMT Server: IIJAnalysisDag x-iijgio-request-id: YgIPIfBiKa2bj0KMgUAdQkf3ShJTOOpXUueF6QKo Content-Type: application/json Content-Length: 30 Connection: close { "queryId" : 2497 }
クエリ一覧取得¶
指定された条件に一致するクエリ情報の一覧を取得します。
1度のリクエストで最大 100件のクエリ情報を返すことができ、maxパラメータを変更することで一覧に含まれるクエリの件数(最大100件)を指定できます。
レスポンスに含まれるクエリ情報が、上記で指定した件数を超える場合には、その一覧が部分的であることをisTruncated要素で通知します。
部分的な一覧の場合にはmarkerを指定して、再度リクエストすることで次の一覧を取得できます。
リクエスト情報¶
シンタックス¶
GET /v1/?query&max={max-keys}&marker={query marker}&status={status}&type={type}&labelPrefix={label}&clusterNamePrefix={cluster name prefix}&clusterRebooted={cluster rebooted}&order={order} HTTP1.1
Host: analysis-dag.iijgio.com
Date: {date}
Authorization: {authorization string}
リクエストパラメータ¶
この操作では以下のリクエストパラメータを使用します。
パラメータ名 | 説明 | 必須 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
max | レスポンスに含める最大クエリ数
|
☓ | ||||||||
marker |
|
☓ | ||||||||
status |
|
☓ | ||||||||
type |
|
☓ | ||||||||
labelPrefix |
|
☓ | ||||||||
clusterName |
|
☓ | ||||||||
clusterNamePrefix |
|
☓ | ||||||||
clusterRebooted |
|
☓ | ||||||||
order |
|
リクエストボディ¶
この操作ではリクエストボディは使用しません。
レスポンス情報¶
レスポンスボディ¶
この操作では以下のレスポンスボディを返します。
名前 | 説明 | ||
---|---|---|---|
nextMarker |
|
||
isTruncated |
|
||
queries |
|
クエリ情報オブジェクトはtypeごとに異なる項目が設定されます。共通項目とそれぞれのtypeごとに含まれる項目は以下のとおりです。
共通項目¶
名前 | 説明 | ||||
---|---|---|---|---|---|
id |
|
||||
type |
|
||||
processEngine |
|
||||
dsl |
|
||||
status |
|
||||
clusterName |
|
||||
accessKeyId |
|
||||
startTime |
|
||||
progress |
|
||||
label |
|
typeがselectの場合¶
名前 | 説明 | ||
---|---|---|---|
stage |
|
||
query |
|
typeがsplitの場合¶
typeがsplitの場合固有の項目はありません。
サンプル¶
- クエリ情報を最大2クエリ分、昇順に取得するサンプル
- リクエスト
GET /v1/?query&max=2&order=asc HTTP1.1 Host: analysis-dag.iijgio.com Content-Length: 0 Date: Wed, 25 Nov 2009 12:00:00 GMT Authorization: IIJGIO 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE=
- レスポンス
HTTP/1.1 200 OK Date: Wed, 25 Nov 2009 12:00:00 GMT Server: IIJAnalysisDag x-iijgio-request-id: YgIPIfBiKa2bj0KMgUAdQkf3ShJTOOpXUueF6QKo Content-Type: application/json Content-Length: 230 Connection: close { "nextMarker" : 2497, "isTruncated" : true, "queries" : [ { "id" : 2490, "type" : "select", "processEngine" : "mapreduce", "dsl" : "hive", "status" : "running", "clusterName" : "sampleCluster1", "clusterRebooted" : false, "startTime" : "2014-12-19 21:51:10", "accessKeyId" : "YOURACCESSKEYID", "stage" : 2, "progress" : "70%", "label" : "任意のラベル", "query" : "SELECT count(v['id']) FROM sampledb.sampletbl" }, { "id" : 2497, "type" : "split", "processEngine" : "mapreduce", "dsl" : "mapreduce", "status" : "running", "clusterName" : "sampleCluster1", "clusterRebooted" : false, "startTime" : "2014-12-19 21:51:10", "accessKeyId" : "YOURACCESSKEYID", "progress" : "50%", "label" : "任意のラベル", } ] }
クエリ情報取得¶
指定されたクエリの情報を取得します。
リクエスト情報¶
シンタックス¶
GET /v1/{query id}?query HTTP1.1
Host: analysis-dag.iijgio.com
Date: {date}
Authorization: {authorization string}
リクエストパラメータ¶
この操作ではリクエストパラメータは使用しません。
リクエストボディ¶
この操作ではリクエストボディは使用しません。
レスポンス情報¶
レスポンスボディ¶
クエリ情報取得APIのレスポンスボディにはtypeごとに異なる項目が設定されます。共通項目とそれぞれのtypeごとに含まれる項目は以下のとおりです。
共通項目¶
名前 | 説明 | ||||
---|---|---|---|---|---|
id |
|
||||
type |
|
||||
processEngine |
|
||||
dsl |
|
||||
status |
|
||||
clusterName |
|
||||
accessKeyId |
|
||||
startTime |
|
||||
progress |
|
||||
label |
|
typeがselectの場合¶
名前 | 説明 | ||
---|---|---|---|
stage |
|
||
query |
|
||
outputFormat |
|
||
outputResourcePath |
|
typeがsplitの場合¶
名前 | 説明 | ||
---|---|---|---|
jobId |
|
||
schema |
|
||
inputObjectKeys |
|
||
inputFormat |
|
||
outputDatabase |
|
||
outputTable |
|
サンプル1¶
- type が
select
のクエリを取得した場合のサンプル - リクエスト
GET /v1/2497?query HTTP1.1 Host: analysis-dag.iijgio.com Content-Length: 0 Date: Wed, 25 Nov 2009 12:00:00 GMT Authorization: IIJGIO 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE=
- レスポンス
HTTP/1.1 200 OK Date: Wed, 25 Nov 2009 12:00:00 GMT Server: IIJAnalysisDag x-iijgio-request-id: YgIPIfBiKa2bj0KMgUAdQkf3ShJTOOpXUueF6QKo Content-Type: application/json Content-Length: 230 Connection: close { "id" : 2490, "type" : "select", "processEngine" : "mapreduce", "dsl" : "hive", "status" : "running", "clusterName" : "sampleCluster1", "clusterRebooted" : false, "startTime" : "2014-12-19 21:51:10", "accessKeyId" : "YOURACCESSKEYID", "stage" : 2, "progress" : "70%", "label" : "任意のラベル", "query" : "SELECT count(v['id']) FROM sampledb.sampletbl" "outputFormat" : "csv" | "tsv", "outputResourcePath" : dag://${bucket}/${outputPath} }
サンプル2¶
- type が
split
のクエリを取得した場合のサンプル - リクエスト
GET /v1/2497?query HTTP1.1 Host: analysis-dag.iijgio.com Content-Length: 0 Date: Wed, 25 Nov 2009 12:00:00 GMT Authorization: IIJGIO 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE=
- レスポンス
HTTP/1.1 200 OK Date: Wed, 25 Nov 2009 12:00:00 GMT Server: IIJAnalysisDag x-iijgio-request-id: YgIPIfBiKa2bj0KMgUAdQkf3ShJTOOpXUueF6QKo Content-Type: application/json Content-Length: 230 Connection: close { "id" : 2497, "type" : "split", "processEngine" : "mapreduce", "dsl" : "mapreduce", "status" : "running", "clusterName" : "sampleCluster1", "clusterRebooted" : false, "startTime" : "2014-12-19 21:51:10", "accessKeyId" : "YOURACCESSKEYID", "jobId" : "application_1326821518301_0007", "progress" : "50%", "label" : "任意のラベル", "schema" : "int v, string v, map<string string> a", "inputObjectKeys" : [ "dag://sampledb/sample_input/bigCSVObject1", "dag://sampledb/sample_input/bigCSVObject2", "dag://sampledb/sample_input/bigCSVObject3" ], "inputFormat" : "csv", "outputDatabase" : "sampledb", "outputTable" : "split_tbl" }
クエリキャンセル¶
実行中のクエリをキャンセルします。
リクエスト情報¶
シンタックス¶
DELETE /v1/{query id}?query HTTP1.1
Host: analysis-dag.iijgio.com
Date: {date}
Authorization: {authorization string}
リクエストパラメータ¶
この操作ではリクエストパラメータは使用しません。
リクエストボディ¶
この操作ではリクエストボディは使用しません。
サンプル¶
- クエリIDが2497のクエリをキャンセルした場合のサンプル
- リクエスト
DELETE /v1/2497?query HTTP1.1 Host: analysis-dag.iijgio.com Content-Length: 0 Date: Wed, 25 Nov 2009 12:00:00 GMT Authorization: IIJGIO 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE=
- レスポンス
HTTP/1.1 204 No Content Date: Wed, 25 Nov 2009 12:00:00 GMT Server: IIJAnalysisDag x-iijgio-request-id: YgIPIfBiKa2bj0KMgUAdQkf3ShJTOOpXUueF6QKo Content-Type: text/plain Content-Length: 0 Connection: close
クエリログ取得¶
クエリのログを取得します。
クエリ実行(HiveQL)APIにて投入されたselectタイプのクエリのみ、ログが取得できます。
Note
クラスタが再起動された場合は、クエリのログは取得できません。
リクエスト情報¶
シンタックス¶
GET /v1/{query id}/log?query HTTP1.1
Host: analysis-dag.iijgio.com
Date: {date}
Authorization: {authorization string}
リクエストパラメータ¶
この操作ではリクエストパラメータは使用しません。
リクエストボディ¶
この操作ではリクエストボディは使用しません。
レスポンス情報¶
レスポンスボディ¶
この操作では以下のレスポンスボディを返します。
名前 | 説明 | ||
---|---|---|---|
log |
|
エラー情報¶
この操作では以下のエラーを返します。
コード | 内容 | ステータス |
---|---|---|
InvalidClusterState | 操作出来ないクラスタのステータスです。 | 400 Bad Request |
InvalidQueryId | queryIdの値が不正です。 | 400 Bad Request |
InvalidQueryState | キャンセル出来ないステータスのクエリが指定されました。 | 400 Bad Request |
InvalidQueryType | ログ取得出来ないタイプのクエリが指定されました。 | 400 Bad Request |
QueryNotFound | 存在しないクエリのIDが指定されました。 | 404 Not Found |
サンプル¶
- クエリIDが 2497 のクエリのログを取得した場合のサンプル
- リクエスト
GET /v1/2497/log?query HTTP1.1 Host: analysis-dag.iijgio.com Content-Length: 0 Date: Wed, 25 Nov 2009 12:00:00 GMT Authorization: IIJGIO 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE=
- レスポンス
HTTP/1.1 200 OK x-iijgio-request-id: YgIPIfBiKa2bj0KMgUAdQkf3ShJTOOpXUueF6QKo Date: Wed, 25 Nov 2009 12:00:00 GMT Server: IIJAnalysisDag Content-Type: application/json Content-Length: 230 Connection: close { "log" : "......" }