語句資源¶
- POST /v1/statement()¶
- 查詢 query:
要執行的 SQL 查詢
- Reqheader X-Presto-User:
代表執行語句的使用者 (可選)
- Reqheader X-Presto-Source:
查詢來源
- Reqheader X-Presto-Catalog:
要針對其執行查詢的目錄
- Reqheader X-Presto-Schema:
要針對其執行查詢的綱要
提交一個語句到 Presto 以執行。Presto 客戶端代表使用者針對目錄和綱要執行查詢。當您使用 Presto CLI 執行查詢時,它會呼叫 Presto 協調器上的語句資源。
對語句資源的請求是要執行的 SQL 查詢,以 post 的方式傳送,並帶有標準的 X-Presto-Catalog、X-Presto-Source、X-Presto-Schema 和 X-Presto-User 標頭。
來自語句資源的回應包含查詢識別碼,可用於收集有關查詢的詳細資訊。此初始回應還包括有關已建立在 Presto 工作節點上執行此查詢的階段的資訊。每個查詢都有一個根階段,並且根階段的階段識別碼為「0」,如下面的範例回應所示。
此根階段會彙總在 Presto 工作節點上執行的其他階段的回應,並透過 Presto 協調器將它們傳遞到客戶端。當客戶端收到對此 POST 的回應時,它將包含一個「nextUri」屬性,該屬性指示客戶端查詢此位址以取得查詢的其他結果。
範例請求:
POST /v1/statement HTTP/1.1 Host: localhost:8001 X-Presto-Catalog: jmx X-Presto-Source: presto-cli X-Presto-Schema: jmx User-Agent: StatementClient/0.55-SNAPSHOT X-Presto-User: tobrie1 Content-Length: 41 select name from "java.lang:type=runtime"
範例回應:
HTTP/1.1 200 OK Content-Type: application/json X-Content-Type-Options: nosniff Transfer-Encoding: chunked { "id":"20140108_110629_00011_dk5x2", "infoUri":"https://127.0.0.1:8001/v1/query/20140108_110629_00011_dk5x2", "partialCancelUri":"http://10.193.207.128:8080/v1/stage/20140108_110629_00011_dk5x2.1", "nextUri":"https://127.0.0.1:8001/v1/statement/20140108_110629_00011_dk5x2/1", "columns": [ { "name":"name", "type":"varchar" } ], "stats": { "state":"RUNNING", "scheduled":false, "nodes":1, "totalSplits":0, "queuedSplits":0, "runningSplits":0, "completedSplits":0, "cpuTimeMillis":0, "wallTimeMillis":0, "processedRows":0, "processedBytes":0, "rootStage": { "stageId":"0", "state":"SCHEDULED", "done":false, "nodes":1, "totalSplits":0, "queuedSplits":0, "runningSplits":0, "completedSplits":0, "cpuTimeMillis":0, "wallTimeMillis":0, "processedRows":0, "processedBytes":0, "subStages": [ { "stageId":"1", "state":"SCHEDULED", "done":false, "nodes":1, "totalSplits":0, "queuedSplits":0, "runningSplits":0, "completedSplits":0, "cpuTimeMillis":0, "wallTimeMillis":0, "processedRows":0, "processedBytes":0, "subStages":[] } ] } } }
- GET /v1/statement/{queryId}/{token}()¶
- 查詢 queryId:
從初始 POST 到 /v1/statement 傳回的查詢識別碼
- 查詢 token:
從初始 POST 到 /v1/statement 或從先前對此相同呼叫傳回的 token
當 Presto 客戶端提交語句以執行時,Presto 會建立一個查詢,然後將 nextUri 傳回給客戶端。此呼叫對應於該 nextUri 呼叫,並且可以包含正在進行中的查詢的狀態更新,或者它可以將最終結果傳遞給客戶端。
範例請求:
GET /v1/statement/20140108_110629_00011_dk5x2/1 HTTP/1.1 Host: localhost:8001 User-Agent: StatementClient/0.55-SNAPSHOT
範例回應:
HTTP/1.1 200 OK Content-Type: application/json X-Content-Type-Options: nosniff Vary: Accept-Encoding, User-Agent Transfer-Encoding: chunked 383 { "id":"20140108_110629_00011_dk5x2", "infoUri":"https://127.0.0.1:8001/v1/query/20140108_110629_00011_dk5x2", "columns": [ { "name":"name", "type":"varchar" } ], "data": [ ["4165@domU-12-31-39-0F-CC-72"] ], "stats": { "state":"FINISHED", "scheduled":true, "nodes":1, "totalSplits":2, "queuedSplits":0, "runningSplits":0, "completedSplits":2, "cpuTimeMillis":1, "wallTimeMillis":4, "processedRows":1, "processedBytes":27, "rootStage": { "stageId":"1", "state":"FINISHED", "done":true, "nodes":1, "totalSplits":1, "queuedSplits":0, "runningSplits":0, "completedSplits":1, "cpuTimeMillis":0, "wallTimeMillis":0, "processedRows":1, "processedBytes":32, "subStages": [ { "stageId":"1", "state":"FINISHED", "done":true, "nodes":1, "totalSplits":1, "queuedSplits":0, "runningSplits":0, "completedSplits":1, "cpuTimeMillis":0, "wallTimeMillis":4, "processedRows":1, "processedBytes":27, "subStages":[] } ] } } }
- DELETE /v1/statement/{queryId}/{token}()¶
- 查詢 queryId:
從初始 POST 到 /v1/statement 傳回的查詢識別碼
- Reqheader X-Presto-User:
代表執行語句的使用者 (可選)
- Reqheader X-Presto-Source:
查詢來源
- Reqheader X-Presto-Catalog:
要針對其執行查詢的目錄
- Reqheader X-Presto-Schema:
要針對其執行查詢的綱要