本部分列出了构成 Presto REST API v1的资源。

请求 Presto 服务

Presto 服务的所有请求都应该使用 Presto REST API v1 版本。

若要请求服务,请使用显式的 URL http://presto.service:8081/v1。 你需要在发送请求前更新 presto.service:8081

POST 请求需要 X-Presto-User . 如果你使用身份验证,则必须使用身份验证配置中指定的相同的 用户名。 如果你不使用身份验证,可以指定 用户名

  1. X-Presto-User: username

欲了解更多关于 headers 的信息,请参阅 PrestoHeaders

Schema

你可以在 HTTP 正文中使用语句。 所有数据都是作为 JSON 文档收到的,它可能包含一个 next Uri 链接。 如果收到的 JSON 文档包含一个 nextUri 链接, 请求继续使用 nextUri 链接,直到收到的数据不包含 nextUri 链接。 如果没有返回错误,则查询成功。 如果一个 错误 字段显示在 统计信息中,这意味着查询失败。

下面是 显示目录 的示例。 此查询将持续到接收的 JSON 文档不包含 nextUri 链接。 由于没有 error 显示在 stats,这意味着查询成功。

  1. ~ curl --header "X-Presto-User: test-user" --request POST --data 'show catalogs' http://localhost:8081/v1/statement
  2. {
  3. "infoUri" : "http://localhost:8081/ui/query.html?20191113_033653_00006_dg6hb",
  4. "stats" : {
  5. "queued" : true,
  6. "nodes" : 0,
  7. "userTimeMillis" : 0,
  8. "cpuTimeMillis" : 0,
  9. "wallTimeMillis" : 0,
  10. "processedBytes" : 0,
  11. "processedRows" : 0,
  12. "runningSplits" : 0,
  13. "queuedTimeMillis" : 0,
  14. "queuedSplits" : 0,
  15. "completedSplits" : 0,
  16. "totalSplits" : 0,
  17. "scheduled" : false,
  18. "peakMemoryBytes" : 0,
  19. "state" : "QUEUED",
  20. "elapsedTimeMillis" : 0
  21. },
  22. "id" : "20191113_033653_00006_dg6hb",
  23. "nextUri" : "http://localhost:8081/v1/statement/20191113_033653_00006_dg6hb/1"
  24. }
  25. ~ curl http://localhost:8081/v1/statement/20191113_033653_00006_dg6hb/1
  26. {
  27. "infoUri" : "http://localhost:8081/ui/query.html?20191113_033653_00006_dg6hb",
  28. "nextUri" : "http://localhost:8081/v1/statement/20191113_033653_00006_dg6hb/2",
  29. "id" : "20191113_033653_00006_dg6hb",
  30. "stats" : {
  31. "state" : "PLANNING",
  32. "totalSplits" : 0,
  33. "queued" : false,
  34. "userTimeMillis" : 0,
  35. "completedSplits" : 0,
  36. "scheduled" : false,
  37. "wallTimeMillis" : 0,
  38. "runningSplits" : 0,
  39. "queuedSplits" : 0,
  40. "cpuTimeMillis" : 0,
  41. "processedRows" : 0,
  42. "processedBytes" : 0,
  43. "nodes" : 0,
  44. "queuedTimeMillis" : 1,
  45. "elapsedTimeMillis" : 2,
  46. "peakMemoryBytes" : 0
  47. }
  48. }
  49. ~ curl http://localhost:8081/v1/statement/20191113_033653_00006_dg6hb/2
  50. {
  51. "id" : "20191113_033653_00006_dg6hb",
  52. "data" : [
  53. [
  54. "pulsar"
  55. ],
  56. [
  57. "system"
  58. ]
  59. ],
  60. "infoUri" : "http://localhost:8081/ui/query.html?20191113_033653_00006_dg6hb",
  61. "columns" : [
  62. {
  63. "typeSignature" : {
  64. "rawType" : "varchar",
  65. "arguments" : [
  66. {
  67. "kind" : "LONG_LITERAL",
  68. "value" : 6
  69. }
  70. ],
  71. "literalArguments" : [],
  72. "typeArguments" : []
  73. },
  74. "name" : "Catalog",
  75. "type" : "varchar(6)"
  76. }
  77. ],
  78. "stats" : {
  79. "wallTimeMillis" : 104,
  80. "scheduled" : true,
  81. "userTimeMillis" : 14,
  82. "progressPercentage" : 100,
  83. "totalSplits" : 19,
  84. "nodes" : 1,
  85. "cpuTimeMillis" : 16,
  86. "queued" : false,
  87. "queuedTimeMillis" : 1,
  88. "state" : "FINISHED",
  89. "peakMemoryBytes" : 0,
  90. "elapsedTimeMillis" : 111,
  91. "processedBytes" : 0,
  92. "processedRows" : 0,
  93. "queuedSplits" : 0,
  94. "rootStage" : {
  95. "cpuTimeMillis" : 1,
  96. "runningSplits" : 0,
  97. "state" : "FINISHED",
  98. "completedSplits" : 1,
  99. "subStages" : [
  100. {
  101. "cpuTimeMillis" : 14,
  102. "runningSplits" : 0,
  103. "state" : "FINISHED",
  104. "completedSplits" : 17,
  105. "subStages" : [
  106. {
  107. "wallTimeMillis" : 7,
  108. "subStages" : [],
  109. "stageId" : "2",
  110. "done" : true,
  111. "nodes" : 1,
  112. "totalSplits" : 1,
  113. "processedBytes" : 22,
  114. "processedRows" : 2,
  115. "queuedSplits" : 0,
  116. "userTimeMillis" : 1,
  117. "cpuTimeMillis" : 1,
  118. "runningSplits" : 0,
  119. "state" : "FINISHED",
  120. "completedSplits" : 1
  121. }
  122. ],
  123. "wallTimeMillis" : 92,
  124. "nodes" : 1,
  125. "done" : true,
  126. "stageId" : "1",
  127. "userTimeMillis" : 12,
  128. "processedRows" : 2,
  129. "processedBytes" : 51,
  130. "queuedSplits" : 0,
  131. "totalSplits" : 17
  132. }
  133. ],
  134. "wallTimeMillis" : 5,
  135. "done" : true,
  136. "nodes" : 1,
  137. "stageId" : "0",
  138. "userTimeMillis" : 1,
  139. "processedRows" : 2,
  140. "processedBytes" : 22,
  141. "totalSplits" : 1,
  142. "queuedSplits" : 0
  143. },
  144. "runningSplits" : 0,
  145. "completedSplits" : 19
  146. }
  147. }

Note

因为响应数据没有从客户端的角度与查询状态同步, 所以不能依靠响应数据来确定查询是否完成。

关于 Presto REST API 的更多信息,请参阅 Presto HTTP 协议