Presto クライアント REST API¶
Prestoクライアントを使用すると、ユーザーはPrestoクエリを送信して結果を表示できます。このノートでは、Prestoクライアントで使用されるREST APIについて説明します。
HTTPメソッド¶
- POSTを- /v1/statementに送信すると、- POST本文のクエリ文字列が実行され、クエリ結果を含むJSONドキュメントが返されます。結果がさらに存在する場合は、JSONドキュメントに- nextUriURL属性が含まれます。
- nextUri属性への- GETは、次のバッチのクエリ結果を返します。
- nextUriへの- DELETEは、実行中のクエリを終了します。
クエリ処理の概要¶
Prestoクライアントのリクエストは、エンドポイント/v1/statementへのHTTP POSTによって開始され、SQLクエリ文字列を含むPOST本文が使用されます。呼び出し側は、セッションのユーザー名にヘッダーX-Presto-Userを設定できます。その他多くのヘッダーも設定でき、以下に説明されています。
クライアントリクエストがHTTP 503を返す場合、サーバーがビジー状態であることを意味し、クライアントは50〜100ミリ秒後に再試行する必要があります。503または200以外のHTTPステータスは、クエリが失敗したことを意味します。
/v1/statement POSTリクエストは、QueryResults型のJSONドキュメントと、レスポンスヘッダーのコレクションを返します。クエリが失敗した場合は、QueryResultsドキュメントにQueryError型のerrorフィールドが含まれ、このオブジェクトが存在しない場合はクエリが成功したことを意味します。QueryResultsの重要なメンバーについては、以下に説明します。
JSONドキュメントのdataフィールドが設定されている場合、データの行のリストが含まれ、columnsフィールドもクエリによって返された列の名前と型のリストに設定されます。レスポンスヘッダーのほとんどは、クライアントによってブラウザのCookieのように扱われ、以下に説明されているように、後続のクライアントリクエストでリクエストヘッダーとしてエコーバックされる必要があります。
バイナリ形式で結果を要求するには、最初の/v1/statement POSTリクエストに`binaryResults=true`クエリパラメーターを含めます。レスポンスJSONドキュメントには、SerializedPage形式のbase64でエンコードされたページのリストを含むbinaryDataフィールドが含まれます。dataフィールドは存在しません。
/v1/statementへのPOSTによって返されたJSONドキュメントにnextUriリンクが含まれていない場合、クエリは成功または失敗のいずれかで完了しており、追加のリクエストを行う必要はありません。nextUriリンクがドキュメントに存在する場合は、取得する必要があるクエリ結果がさらにあります。クライアントは、nextUriがレスポンスからなくなるまで、QueryResultsレスポンスオブジェクトで返されたnextUriへのGETリクエストを実行するループを実行する必要があります。
JSONドキュメントのstatusフィールドは、人間が読むためのものであり、サーバー上のクエリの状態に関するヒントを提供します。サーバーのクエリ状態と同期しておらず、クエリの完了を判断するために使用しないでください。
重要なQueryResults属性¶
REST APIエンドポイントによって返されるQueryResults JSONドキュメントの最も重要な属性がこの表にリストされています。QueryResultsクラスの詳細については、そちらを参照してください。
| 属性 | 説明 | 
|---|---|
| 
 | クエリのID。 | 
| 
 | 存在する場合は、後続の | 
| 
 | クエリによって返された列の名前と型のリスト。 | 
| 
 | 
 | 
| 
 | 操作を表す人間が判読できる文字列。 | 
| 
 | クエリが失敗した場合、 | 
クライアントリクエストヘッダー¶
この表には、サポートされているすべてのクライアントリクエストヘッダーがリストされています。多くのヘッダーは、レスポンスヘッダーによってクライアントで更新され、ブラウザのCookieと同様に、後続のリクエストで提供されます。
| リクエストヘッダー名 | 説明 | 
|---|---|
| 
 | 
 | 
| 
 | レポート目的で、クエリを送信したソフトウェアの名前を提供します。 | 
| 
 | クエリの実行時に使用するカタログ。レスポンスヘッダー | 
| 
 | クエリ実行時に使用するスキーマ。レスポンスヘッダー | 
| 
 | クエリ実行時に使用するタイムゾーン。デフォルトはPrestoエンジンのタイムゾーンです。 | 
| 
 | クエリ実行時および結果のフォーマット時に使用する言語。セッションの言語は、 | 
| 
 | このクエリリクエストに由来するログ行を識別するのに役立つトレーストークンをPrestoエンジンに提供します。 | 
| 
 | 
 | 
| 
 | このリクエストで使用されるカタログロールを設定します。レスポンスヘッダー | 
| 
 | name=valueペアのカンマ区切りリスト。nameは事前に準備されたSQL文の名前、valueは名前付き準備済みステートメントの実行可能形式を識別するキーです。 | 
| 
 | クエリ実行時に使用するトランザクションID。レスポンスヘッダー | 
| 
 | クエリを送信するクライアントプログラムに関する任意の情報を格納します。 | 
| 
 | Prestoリソースグループを識別するために使用される「タグ」文字列のカンマ区切りリストです。 | 
| 
 | 
 | 
| 
 | コネクタに追加の資格情報を提供します。このヘッダーは、セッション | 
クライアントレスポンスヘッダー¶
この表には、サポートされているクライアントレスポンスヘッダーが一覧表示されています。レスポンスを受信した後、クライアントは、受信したレスポンスヘッダーと一致するように、後続のリクエストで使用されるリクエストヘッダーを更新する必要があります。
| レスポンスヘッダー名 | 説明 | 
|---|---|
| 
 | クライアントに、後続のクライアントリクエストで | 
| 
 | クライアントに、後続のクライアントリクエストで | 
| 
 | 
 | 
| 
 | クライアントに、 | 
| 
 | クライアントに、後続のクライアントリクエストで | 
| 
 | クライアントに、name=valueペアを、後続のクライアントリクエストで | 
| 
 | クライアントに、 | 
| 
 | クライアントが後続のリクエストで | 
| 
 | クライアントに、後続のリクエストで使用される | 
QueryResults¶
クライアントによってクエリが実行されると、QueryResultsオブジェクトが返されます。QueryResultsには、多数のデータメンバーが含まれています。これらのデータメンバーは、問題の追跡に役立つ場合があります。
| データメンバー | 型 | 備考 | 
|---|---|---|
| 
 | 
 | クエリがエラーになった場合のみnull以外になります。 | 
| 
 | 
 | 通常は空の警告リスト。 | 
| 
 | 
 | クエリ実行に関する統計を含むクラス。 | 
PrestoHeaders¶
クラスPrestoHeadersは、PrestoクライアントREST APIで許可されているすべてのHTTPリクエストヘッダーとレスポンスヘッダーを列挙します。