blob: 0e183f509e8daa271c6f9fc70d01d891c9544b4f [file] [view]
---
layout: docs-cn
title: API 构建 Cube
categories: 帮助
permalink: /cn/docs/howto/howto_build_cube_with_restapi.html
---
### 1. 认证
* 目前Kylin使用[basic authentication](http://en.wikipedia.org/wiki/Basic_access_authentication)。
* 给第一个请求加上用于认证的 Authorization 头部。
* 或者进行一个特定的请求: POST http://localhost:7070/kylin/api/user/authentication 。
* 完成认证后, 客户端可以在接下来的请求里带上cookie
{% highlight Groff markup %}
POST http://localhost:7070/kylin/api/user/authentication
Authorization:Basic xxxxJD124xxxGFxxxSDF
Content-Type: application/json;charset=UTF-8
{% endhighlight %}
### 2. 获取Cube的详细信息
* `GET http://localhost:7070/kylin/api/cubes?cubeName={cube_name}&limit=15&offset=0`
* 用户可以在返回的cube详细信息里找到cubesegment日期范围。
{% highlight Groff markup %}
GET http://localhost:7070/kylin/api/cubes?cubeName=test_kylin_cube_with_slr&limit=15&offset=0
Authorization:Basic xxxxJD124xxxGFxxxSDF
Content-Type: application/json;charset=UTF-8
{% endhighlight %}
### 3. 然后提交cube构建任务
* `PUT http://localhost:7070/kylin/api/cubes/{cube_name}/rebuild`
* 关于 put 的请求体细节请参考 Build Cube API
* `startTime` `endTime` 应该是utc时间。
* `buildType` 可以是 `BUILD` `MERGE` `REFRESH` `BUILD` 用于构建一个新的segment `REFRESH` 用于刷新一个已有的segment `MERGE` 用于合并多个已有的segment生成一个较大的segment
* 这个方法会返回一个新建的任务实例,它的uuid是任务的唯一id,用于追踪任务状态。
{% highlight Groff markup %}
PUT http://localhost:7070/kylin/api/cubes/test_kylin_cube_with_slr/rebuild
Authorization:Basic xxxxJD124xxxGFxxxSDF
Content-Type: application/json;charset=UTF-8
{
"startTime": 0,
"endTime": 1388563200000,
"buildType": "BUILD"
}
{% endhighlight %}
### 4. 跟踪任务状态
* `GET http://localhost:7070/kylin/api/jobs/{job_uuid}`
* 返回的 `job_status` 代表job的当前状态。
### 5. 如果构建任务出现错误,可以重新开始它
* `PUT http://localhost:7070/kylin/api/jobs/{job_uuid}/resume`
### 6. 调整某个 cube 中的 cuboid list,触发 optimize segment 任务
* `PUT http://localhost:7070/kylin/api/cubes/{cube_name}/optimize2`