Presto クライアント REST API¶
Prestoクライアントを使用すると、ユーザーはPrestoクエリを送信して結果を表示できます。このノートでは、Prestoクライアントで使用されるREST APIについて説明します。
HTTPメソッド¶
POST
を/v1/statement
に送信すると、POST
本文のクエリ文字列が実行され、クエリ結果を含むJSONドキュメントが返されます。結果がさらに存在する場合は、JSONドキュメントにnextUri
URL属性が含まれます。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リクエストヘッダーとレスポンスヘッダーを列挙します。