2015/03/02 Version 1.0.0
クエリ¶
クエリは、クラスタに対して解析を指示するための要求の最小単位です。入力元と出力先、どの様に解析を行うかといった情報を保持します。
クエリの発行はクエリ発行(HiveQL)APIまたはクエリ発行(Split)APIで行います。
発行されたクエリは、実行状態を表すステータスを常に1つ持ちます。
Note
クエリが使用するストレージ上の作業領域と課金について
Note
自動作成されるオブジェクトについて
ステータス¶
クエリの現在の状態を取得するには、クエリ一覧取得APIまたはクエリ情報取得APIを用います。
クエリのステータスごとに使用できるクエリAPIが異なります。
名前 | 説明 | 使用できるAPI |
---|---|---|
running |
|
すべてのAPI
|
error |
|
クエリキャンセルAPIを除くすべてのAPI
|
canceled |
|
クエリキャンセルAPIを除くすべてのAPI
|
finished |
|
クエリキャンセルAPIを除くすべてのAPI
|
Note
クエリ情報の保持期間について
入出力に関する共通仕様¶
ストレージのバケットやオブジェクトといったリソースを指定する際は、dagスキームで始まるURIで行います。
例 : sampleバケットのoutputディレクトリを指定する場合dag://sample/output/
Note
ディレクトリについて
Note
出力先の削除について
クエリの出力先に指定されたディレクトリに格納されたすべてのオブジェクトは、より深い階層のディレクトリも含めて再帰的に削除されます。
クエリ実行後は、クエリの出力のみとなる事にご注意下さい。
Note
出力先のオブジェクトについて
出力先に同名のオブジェクトが存在する場合、ディレクトリを作成出来ないためエラーとなります。該当のオブジェクトを削除するか、移動して下さい。
クエリ発行(HiveQL)API¶
クエリ発行(HiveQL)APIは、HiveQL文を実行するAPIです。
解析対象データの場所を表すデータベースとテーブル、実行するHiveQL文、出力先のディレクトリを指定する必要があります。
クエリ発行(HiveQL)APIで発行されたクエリは複数のステージに分けて実行されます。
クエリ情報取得APIでは、ステージごとの進捗率をprogressの値として返します。
HiveQL文¶
クラスタタイプと使用可能なHiveQL文は以下のとおりです。
クラスタタイプ | HiveQLバージョン |
---|---|
DAG5-Hive-Hadoop | Apache Hive 0.12.0 |
Note
発行できないHiveQL文について
- クエリ発行(HiveQL) APIでは、データベース名を省略することはできません。必ずドット(.)区切りでデータベースとテーブルをFROM句に指定して下さい。
- SELECT文のみ実行する事ができます。その他の文(INSERT、UPDATE、LOADなど)を実行しようとするとエラーレスポンスが返ります。
- &&、||演算子は利用できません。代わりにANDおよびORを利用してください。
- UNION型は現在利用できません。
入力¶
HiveQL文のFROM句に指定されたデータベース名とテーブル名で解析対象データを指定することができます。
指定されたデータベースとテーブルが表すディレクトリ直下に格納されているオブジェクトを入力として解析処理を行います。
Note
- 入力対象外となるオブジェクト
- アンダースコア(_)で始まるオブジェクトドット(.)で始まるオブジェクトスラッシュ(/)が含まれるオブジェクト(より深い階層のディレクトリに配置されたオブジェクト)
出力¶
クエリが完了すると、HiveQL文の実行結果および結果のメタ情報が、outputResourcePathに指定されたストレージに格納されます。
HiveQL文の実行結果¶
HiveQL文によって解析された結果が非圧縮で、ひとつまたは複数のオブジェクトとして格納されます。
結果のメタ情報¶
JDBCドライバ、ユーザライブラリ、およびコマンドラインツールが利用するメタ情報を、オブジェクト名”.resultsetmetadata”として格納します。
これらのクライアントアプリケーションを利用する場合、”.resultsetmetadata”オブジェクトに対する操作を行うと正しい動作が妨げられる場合があるため、避けてください。
クエリ発行(Split)API¶
クエリ発行(Split)APIは、ひとつまたは複数の巨大なオブジェクトを64MB以内のオブジェクトに分割しストレージに出力します。
同一の巨大なオブジェクトを入力としたHiveQLクエリを繰り返し実行する場合、事前に分割処理を行うことでHiveQLクエリの実行時間を短縮できる場合があります。
テーブルが既に存在する場合、および出力先データベースが存在しない場合はエラーを返します。
入力¶
入力とするオブジェクトは複数指定する事ができます。
スラッシュ(/)で終わるオブジェクト名を入力に指定した場合は、 ディレクトリを一括して入力に指定したものと解釈されます。この場合は、ディレクトリ直下にあるオブジェクトすべてが分割対象の入力オブジェクトとなります。
分割処理は改行区切りで行われ、フォーマットの値とは関係なくすべてのデータが出力されます。一行のデータが64MB以上ある場合は、分割されずに1オブジェクトとして出力されます。また、分割対象となったオブジェクトの大きさが既に64MB以内の場合はそのまま出力されます。
Note
- 入力対象外となるオブジェクト
- アンダースコア(_)で始まるオブジェクトドット(.)で始まるオブジェクトスラッシュ(/)が含まれるオブジェクト(より深い階層のディレクトリに配置されたオブジェクト)