語句資源

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:

要針對其執行查詢的綱要