1. rename database does not modify the coresponding names in cluster. 2. Result of SHOW BROKERS does not match that of in SHOW PROC '/brokers'. 3. Bugs when set property for other user using admin user.
33 KiB
33 KiB
LOAD
description
该语句用于向指定的 table(base table) 导入数据。
该操作会同时更新和此 base table 相关的 rollup table 的数据。
这是一个异步操作,任务提交成功则返回。执行后可使用 SHOW LOAD 命令查看进度。
NULL导入的时候用\N来表示。如果需要将其他字符串转化为NULL,可以使用replace_value进行转化。
语法:
LOAD LABEL load_label
(
data_desc1[, data_desc2, ...]
)
broker
[opt_properties];
1. load_label
当前导入批次的标签。在一个 database 唯一。
语法:
[database_name.]your_label
2. data_desc
用于描述一批导入数据。
语法:
DATA INFILE
(
"file_path1"[, file_path2, ...]
)
[NEGATIVE]
INTO TABLE `table_name`
[PARTITION (p1, p2)]
[COLUMNS TERMINATED BY "column_separator"]
[(column_list)]
[SET (k1 = func(k2))]
说明:
file_path: 文件路径,可以指定到一个文件,也可以用 * 通配符指定某个目录下的所有文件。
PARTITION:
如果指定此参数,则只会导入指定的分区,导入分区以外的数据会被过滤掉。
如果不指定默认导入table的所有分区。
NEGATIVE:
如果指定此参数,则相当于导入一批“负”数据。用于抵消之前导入的同一批数据。
该参数仅适用于存在 value 列,并且 value 列的聚合类型仅为 SUM 的情况。
column_separator:
用于指定导入文件中的列分隔符。默认为 \t
如果是不可见字符,则需要加\\x作为前缀,使用十六进制来表示分隔符。
如hive文件的分隔符\x01,指定为"\\x01"
column_list:
用于指定导入文件中的列和 table 中的列的对应关系。
当需要跳过导入文件中的某一列时,将该列指定为 table 中不存在的列名即可。
语法:
(col_name1, col_name2, ...)
SET:
如果指定此参数,可以将源文件某一列按照函数进行转化,然后将转化后的结果导入到table中。
目前支持的函数有:
strftime(fmt, column) 日期转换函数
fmt: 日期格式,形如%Y%m%d%H%M%S (年月日时分秒)
column: column_list中的列,即输入文件中的列。存储内容应为数字型的时间戳。
如果没有column_list,则按照palo表的列顺序默认输入文件的列。
time_format(output_fmt, input_fmt, column) 日期格式转化
output_fmt: 转化后的日期格式,形如%Y%m%d%H%M%S (年月日时分秒)
input_fmt: 转化前column列的日期格式,形如%Y%m%d%H%M%S (年月日时分秒)
column: column_list中的列,即输入文件中的列。存储内容应为input_fmt格式的日期字符串。
如果没有column_list,则按照palo表的列顺序默认输入文件的列。
alignment_timestamp(precision, column) 将时间戳对齐到指定精度
precision: year|month|day|hour
column: column_list中的列,即输入文件中的列。存储内容应为数字型的时间戳。
如果没有column_list,则按照palo表的列顺序默认输入文件的列。
注意:对齐精度为year、month的时候,只支持20050101~20191231范围内的时间戳。
default_value(value) 设置某一列导入的默认值
不指定则使用建表时列的默认值
md5sum(column1, column2, ...) 将指定的导入列的值求md5sum,返回32位16进制字符串
replace_value(old_value[, new_value]) 将导入文件中指定的old_value替换为new_value
new_value如不指定则使用建表时列的默认值
hll_hash(column) 用于将表或数据里面的某一列转化成HLL列的数据结构
3. broker
用于指定导入使用的Broker
语法:
WITH BROKER broker_name ("key"="value"[,...])
这里需要指定具体的Broker name, 以及所需的Broker属性
4. opt_properties
用于指定一些特殊参数。
语法:
[PROPERTIES ("key"="value", ...)]
可以指定如下参数:
timeout: 指定导入操作的超时时间。默认不超时。单位秒。
max_filter_ratio:最大容忍可过滤(数据不规范等原因)的数据比例。默认零容忍。
load_delete_flag:指定该导入是否通过导入key列的方式删除数据,仅适用于UNIQUE KEY,
导入时可不指定value列。默认为false。
exec_mem_limit: 当使用 broker 方式导入时,可以指定导入作业在单个 BE 上的内存大小限制。
单位是字节。(默认是 2147483648,即 2G)
5. 导入数据格式样例
整型类(TINYINT/SMALLINT/INT/BIGINT/LARGEINT):1, 1000, 1234
浮点类(FLOAT/DOUBLE/DECIMAL):1.1, 0.23, .356
日期类(DATE/DATETIME):2017-10-03, 2017-06-13 12:34:03。
(注:如果是其他日期格式,可以在导入命令中,使用 strftime 或者 time_format 函数进行转换)
字符串类(CHAR/VARCHAR):"I am a student", "a"
NULL值:\N
example
1. 导入一批数据,指定超时时间和过滤比例
LOAD LABEL example_db.label1
(
DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
INTO TABLE `my_table`
)
WITH BROKER hdfs ("username"="hdfs_user", "password"="hdfs_password")
PROPERTIES
(
"timeout"="3600",
"max_filter_ratio"="0.1"
);
2. 导入一批数据,包含多个文件。导入不同的 table,指定分隔符,指定列对应关系
LOAD LABEL example_db.label2
(
DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file1")
INTO TABLE `my_table_1`
COLUMNS TERMINATED BY ","
(k1, k3, k2, v1, v2),
DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file2")
INTO TABLE `my_table_2`
COLUMNS TERMINATED BY "\t"
(k1, k2, k3, v2, v1)
)
WITH BROKER hdfs ("username"="hdfs_user", "password"="hdfs_password");
3. 导入一批数据,指定hive的默认分隔符\x01,并使用通配符*指定目录下的所有文件
LOAD LABEL example_db.label3
(
DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/*")
NEGATIVE
INTO TABLE `my_table`
COLUMNS TERMINATED BY "\\x01"
)
WITH BROKER hdfs ("username"="hdfs_user", "password"="hdfs_password");
4. 导入一批“负”数据
LOAD LABEL example_db.label4
(
DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/old_file)
NEGATIVE
INTO TABLE `my_table`
COLUMNS TERMINATED BY "\t"
)
WITH BROKER hdfs ("username"="hdfs_user", "password"="hdfs_password");
5. 导入一批数据,指定分区
LOAD LABEL example_db.label5
(
DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
INTO TABLE `my_table`
PARTITION (p1, p2)
COLUMNS TERMINATED BY ","
(k1, k3, k2, v1, v2)
)
WITH BROKER hdfs ("username"="hdfs_user", "password"="hdfs_password");
6. 导入一批数据,指定分区, 并对导入文件的列做一些转化,如下:
1) k1将tmp_k1时间戳列转化为datetime类型的数据
2) k2将tmp_k2 date类型的数据转化为datetime的数据
3) k3将tmp_k3时间戳列转化为天级别时间戳
4) k4指定导入默认值为1
5) k5将tmp_k1、tmp_k2、tmp_k3列计算md5串
6) k6将导入文件中的-值替换为10
LOAD LABEL example_db.label6
(
DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
INTO TABLE `my_table`
PARTITION (p1, p2)
COLUMNS TERMINATED BY ","
(tmp_k1, tmp_k2, tmp_k3, k6, v1, v2)
SET (
k1 = strftime("%Y-%m-%d %H:%M:%S", tmp_k1)),
k2 = time_format("%Y-%m-%d %H:%M:%S", "%Y-%m-%d", tmp_k2)),
k3 = alignment_timestamp("day", tmp_k3),
k4 = default_value("1"),
k5 = md5sum(tmp_k1, tmp_k2, tmp_k3),
k6 = replace_value("-", "10")
)
)
WITH BROKER hdfs ("username"="hdfs_user", "password"="hdfs_password");
7. 导入数据到含有HLL列的表,可以是表中的列或者数据里面的列
LOAD LABEL example_db.label7
(
DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
INTO TABLE `my_table`
PARTITION (p1, p2)
COLUMNS TERMINATED BY ","
SET (
v1 = hll_hash(k1),
v2 = hll_hash(k2)
)
)
WITH BROKER hdfs ("username"="hdfs_user", "password"="hdfs_password");
LOAD LABEL example_db.label8
(
DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
INTO TABLE `my_table`
PARTITION (p1, p2)
COLUMNS TERMINATED BY ","
(k1, k2, tmp_k3, tmp_k4, v1, v2)
SET (
v1 = hll_hash(tmp_k3),
v2 = hll_hash(tmp_k4)
)
)
WITH BROKER hdfs ("username"="hdfs_user", "password"="hdfs_password");
keyword
LOAD,TABLE
CANCEL LOAD
description
该语句用于撤销指定 load label 的批次的导入作业。
这是一个异步操作,任务提交成功则返回。执行后可使用 SHOW LOAD 命令查看进度。
语法:
CANCEL LOAD
[FROM db_name]
WHERE LABEL = "load_label";
example
1. 撤销数据库 example_db 上, label 为 example_db_test_load_label 的导入作业
CANCEL LOAD
FROM example_db
WHERE LABEL = "example_db_test_load_label";
keyword
CANCEL,LOAD
DELETE
description
该语句用于按条件删除指定 table(base index) partition 中的数据。
该操作会同时删除和此 base index 相关的 rollup index 的数据。
语法:
DELETE FROM table_name PARTITION partition_name
WHERE
column_name1 op value[ AND column_name2 op value ...];
说明:
1) op 的可选类型包括:=, >, <, >=, <=, !=
2) 只能指定 key 列上的条件。
3) 条件之间只能是“与”的关系。
若希望达成“或”的关系,需要将条件分写在两个 DELETE语句中。
4) 如果为单分区表,partition_name 同 table_name。
注意:
该语句可能会降低执行后一段时间内的查询效率。
影响程度取决于语句中指定的删除条件的数量。
指定的条件越多,影响越大。
example
1. 删除 my_table partition p1 中 k1 列值为 3 的数据行
DELETE FROM my_table PARTITION p1
WHERE k1 = 3;
2. 删除 my_table partition p1 中 k1 列值大于等于 3 且 k2 列值为 "abc" 的数据行
DELETE FROM my_table PARTITION p1
WHERE k1 >= 3 AND k2 = "abc";
keyword
DELETE
CANCEL DELETE
description
该语句用于撤销一个 DELETE 操作。(仅管理员使用!)(待实现)
example
keyword
CANCEL,DELETE
MINI LOAD
description
Syntax:
curl --location-trusted -u user:passwd -T data.file http://host:port/api/{db}/{table}/_load?label=xxx
MINI LOAD 是 Palo 新提供的一种导入方式,这种导入方式可以使用户不依赖 Hadoop,从而完成导入方式。
此种导入方式提交任务并不是通过 MySQL 客户端,而是通过 http 协议来完成的。用户通过 http 协议将导入描述,
数据一同发送给 Palo,Palo 在接收任务成功后,会立即返回给用户成功信息,但是此时,数据并未真正导入。
用户需要通过 'SHOW LOAD' 命令来查看具体的导入结果。
HTTP协议相关说明
权限认证 当前 Palo 使用 http 的 Basic 方式权限认证。所以在导入的时候需要指定用户名密码
这种方式是明文传递密码的,鉴于我们当前都是内网环境。。。
Expect Palo需要发送过来的 http 请求带有 'Expect' 头部信息,内容为 '100-continue'。
为什么呢?因为我们需要将请求进行 redirect,那么必须在传输数据内容之前,
这样可以避免造成数据的多次传输,从而提高效率。
Content-Length Palo 需要在发送请求时带有 'Content-Length' 这个头部信息。如果发送的内容比
'Content-Length' 要少,那么 Palo 认为传输出现问题,则提交此次任务失败。
NOTE: 如果,发送的数据比 'Content-Length' 要多,那么 Palo 只读取 'Content-Length'
长度的内容,并进行导入
参数说明:
user: 用户如果是在default_cluster中的,user即为user_name。否则为user_name@cluster_name。
label: 用于指定这一批次导入的 label,用于后期进行作业状态查询等。
这个参数是必须传入的。
columns: 用于描述导入文件中对应的列名字。
如果不传入,那么认为文件中的列顺序与建表的顺序一致,
指定的方式为逗号分隔,例如:columns=k1,k2,k3,k4
column_separator: 用于指定列与列之间的分隔符,默认的为'\t'
NOTE: 需要进行url编码,譬如
需要指定'\t'为分隔符,那么应该传入'column_separator=%09'
需要指定'\x01'为分隔符,那么应该传入'column_separator=%01'
max_filter_ratio: 用于指定允许过滤不规范数据的最大比例,默认是0,不允许过滤
自定义指定应该如下:'max_filter_ratio=0.2',含义是允许20%的错误率
hll: 用于指定数据里面和表里面的HLL列的对应关系,表中的列和数据里面指定的列
(如果不指定columns,则数据列面的列也可以是表里面的其它非HLL列)通过","分割
指定多个hll列使用“:”分割,例如: 'hll1,cuid:hll2,device'
NOTE:
1. 此种导入方式当前是在一台机器上完成导入工作,因而不宜进行数据量较大的导入工作。
建议导入数据量不要超过 1 GB
2. 当前无法使用 `curl -T "{file1, file2}"` 这样的方式提交多个文件,因为curl是将其拆成多个
请求发送的,多个请求不能共用一个label号,所以无法使用
3. 支持类似 streaming 的方式使用 curl 来向 palo 中导入数据,但是,只有等这个 streaming 结束后 palo
才会发生真实的导入行为,这中方式数据量也不能过大。
example
1. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表(用户是defalut_cluster中的)
curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123
2. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表(用户是test_cluster中的)
curl --location-trusted -u root@test_cluster:root -T testData http://fe.host:port/api/testDb/testTbl/_load?label=123
3. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表, 允许20%的错误率(用户是defalut_cluster中的)
curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123\&max_filter_ratio=0.2
4. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表, 允许20%的错误率,并且指定文件的列名(用户是defalut_cluster中的)
curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123\&max_filter_ratio=0.2\&columns=k1,k2,k3
5. 使用streaming方式导入(用户是defalut_cluster中的)
seq 1 10 | awk '{OFS="\t"}{print $1, $1 * 10}' | curl --location-trusted -u root -T - http://host:port/api/testDb/testTbl/_load?label=123
6. 导入含有HLL列的表,可以是表中的列或者数据中的列用于生成HLL列(用户是defalut_cluster中的
curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123\&max_filter_ratio=0.2\&hll=hll_column1,k1:hll_column2,k2
curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123\&max_filter_ratio=0.2
\&hll=hll_column1,tmp_k4:hll_column2,tmp_k5\&columns=k1,k2,k3,tmp_k4,tmp_k5
keyword
MINI, LOAD
MULTI LOAD
description
Syntax:
curl --location-trusted -u user:passwd -XPOST http://host:port/api/{db}/_multi_start?label=xxx
curl --location-trusted -u user:passwd -T data.file http://host:port/api/{db}/{table1}/_load?label=xxx\&sub_label=yyy
curl --location-trusted -u user:passwd -T data.file http://host:port/api/{db}/{table2}/_load?label=xxx\&sub_label=zzz
curl --location-trusted -u user:passwd -XPOST http://host:port/api/{db}/_multi_commit?label=xxx
curl --location-trusted -u user:passwd -XPOST http://host:port/api/{db}/_multi_desc?label=xxx
'MULTI LOAD'在'MINI LOAD'的基础上,可以支持用户同时向多个表进行导入,具体的命令如上面所示
'/api/{db}/_multi_start' 开始一个多表导入任务
'/api/{db}/{table}/_load' 向一个导入任务添加一个要导入的表,与'MINI LOAD'的主要区别是,需要传入'sub_label'参数
'/api/{db}/_multi_commit' 提交整个多表导入任务,后台开始进行处理
'/api/{db}/_multi_abort' 放弃一个多表导入任务
'/api/{db}/_multi_desc' 可以展示某个多表导入任务已经提交的作业数
HTTP协议相关说明
权限认证 当前Palo使用http的Basic方式权限认证。所以在导入的时候需要指定用户名密码
这种方式是明文传递密码的,鉴于我们当前都是内网环境。。。
Expect Palo需要发送过来的http请求,需要有'Expect'头部信息,内容为'100-continue'
为什么呢?因为我们需要将请求进行redirect,那么必须在传输数据内容之前,
这样可以避免造成数据的多次传输,从而提高效率。
Content-Length Palo需要在发送请求是带有'Content-Length'这个头部信息。如果发送的内容比
'Content-Length'要少,那么Palo认为传输出现问题,则提交此次任务失败。
NOTE: 如果,发送的数据比'Content-Length'要多,那么Palo只读取'Content-Length'
长度的内容,并进行导入
参数说明:
user: 用户如果是在default_cluster中的,user即为user_name。否则为user_name@cluster_name。
label: 用于指定这一批次导入的label号,用于后期进行作业状态查询等。
这个参数是必须传入的。
sub_label: 用于指定一个多表导入任务内部的子版本号。对于多表导入的load, 这个参数是必须传入的。
columns: 用于描述导入文件中对应的列名字。
如果不传入,那么认为文件中的列顺序与建表的顺序一致,
指定的方式为逗号分隔,例如:columns=k1,k2,k3,k4
column_separator: 用于指定列与列之间的分隔符,默认的为'\t'
NOTE: 需要进行url编码,譬如需要指定'\t'为分隔符,
那么应该传入'column_separator=%09'
max_filter_ratio: 用于指定允许过滤不规范数据的最大比例,默认是0,不允许过滤
自定义指定应该如下:'max_filter_ratio=0.2',含义是允许20%的错误率
在'_multi_start'时传入有效果
NOTE:
1. 此种导入方式当前是在一台机器上完成导入工作,因而不宜进行数据量较大的导入工作。
建议导入数据量不要超过1GB
2. 当前无法使用`curl -T "{file1, file2}"`这样的方式提交多个文件,因为curl是将其拆成多个
请求发送的,多个请求不能共用一个label号,所以无法使用
3. 支持类似streaming的方式使用curl来向palo中导入数据,但是,只有等这个streaming结束后palo
才会发生真实的导入行为,这中方式数据量也不能过大。
example
1. 将本地文件'testData1'中的数据导入到数据库'testDb'中'testTbl1'的表,并且
把'testData2'的数据导入到'testDb'中的表'testTbl2'(用户是defalut_cluster中的)
curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_start?label=123
curl --location-trusted -u root -T testData1 http://host:port/api/testDb/testTbl1/_load?label=123\&sub_label=1
curl --location-trusted -u root -T testData2 http://host:port/api/testDb/testTbl2/_load?label=123\&sub_label=2
curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_commit?label=123
2. 多表导入中途放弃(用户是defalut_cluster中的)
curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_start?label=123
curl --location-trusted -u root -T testData1 http://host:port/api/testDb/testTbl1/_load?label=123\&sub_label=1
curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_abort?label=123
3. 多表导入查看已经提交多少内容(用户是defalut_cluster中的)
curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_start?label=123
curl --location-trusted -u root -T testData1 http://host:port/api/testDb/testTbl1/_load?label=123\&sub_label=1
curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_desc?label=123
keyword
MULTI, MINI, LOAD
EXPORT
description
该语句用于将指定表的数据导出到指定位置。
这是一个异步操作,任务提交成功则返回。执行后可使用 SHOW EXPORT 命令查看进度。
语法:
EXPORT TABLE table_name
[PARTITION (p1[,p2])]
TO export_path
[opt_properties]
broker;
1. table_name
当前要导出的表的表名,目前支持engine为olap和mysql的表的导出。
2. partition
可以只导出指定表的某些指定分区
3. export_path
导出的路径,需为目录。目前不能导出到本地,需要导出到broker。
4. opt_properties
用于指定一些特殊参数。
语法:
[PROPERTIES ("key"="value", ...)]
可以指定如下参数:
column_separator:指定导出的列分隔符,默认为\t。
line_delimiter:指定导出的行分隔符,默认为\n。
5. broker
用于指定导出使用的broker
语法:
WITH BROKER broker_name ("key"="value"[,...])
这里需要指定具体的broker name, 以及所需的broker属性
example
1. 将testTbl表中的所有数据导出到hdfs上
EXPORT TABLE testTbl TO "hdfs://hdfs_host:port/a/b/c" WITH BROKER "broker_name" ("username"="xxx", "password"="yyy");
2. 将testTbl表中的分区p1,p2导出到hdfs上
EXPORT TABLE testTbl PARTITION (p1,p2) TO "hdfs://hdfs_host:port/a/b/c" WITH BROKER "broker_name" ("username"="xxx", "password"="yyy");
3. 将testTbl表中的所有数据导出到hdfs上,以","作为列分隔符
EXPORT TABLE testTbl TO "hdfs://hdfs_host:port/a/b/c" PROPERTIES ("column_separator"=",") WITH BROKER "broker_name" ("username"="xxx", "password"="yyy");
keyword
EXPORT
SHOW DATABASES
description
该语句用于展示当前可见的 db
语法:
SHOW DATABASES;
keyword
SHOW,DATABASES
SHOW TABLES
description
该语句用于展示当前 db 下所有的 table
语法:
SHOW TABLES;
keyword
SHOW,TABLES
SHOW LOAD
description
该语句用于展示指定的导入任务的执行情况
语法:
SHOW LOAD
[FROM db_name]
[
WHERE
[LABEL [ = "your_label" | LIKE "label_matcher"]]
[STATE = ["PENDING"|"ETL"|"LOADING"|"FINISHED"|"CANCELLED"|]]
]
[ORDER BY ...]
[LIMIT limit];
说明:
1) 如果不指定 db_name,使用当前默认db
2) 如果使用 LABEL LIKE,则会匹配导入任务的 label 包含 label_matcher 的导入任务
3) 如果使用 LABEL = ,则精确匹配指定的 label
4) 如果指定了 STATE,则匹配 LOAD 状态
5) 可以使用 ORDER BY 对任意列组合进行排序
6) 如果指定了 LIMIT,则显示 limit 条匹配记录。否则全部显示
example
1. 展示默认 db 的所有导入任务
SHOW LOAD;
2. 展示指定 db 的导入任务,label 中包含字符串 "2014_01_02",展示最老的10个
SHOW LOAD FROM example_db WHERE LABEL LIKE "2014_01_02" LIMIT 10;
3. 展示指定 db 的导入任务,指定 label 为 "load_example_db_20140102" 并按 LoadStartTime 降序排序
SHOW LOAD FROM example_db WHERE LABEL = "load_example_db_20140102" ORDER BY LoadStartTime DESC;
4. 展示指定 db 的导入任务,指定 label 为 "load_example_db_20140102" ,state 为 "loading", 并按 LoadStartTime 降序排序
SHOW LOAD FROM example_db WHERE LABEL = "load_example_db_20140102" AND STATE = "loading" ORDER BY LoadStartTime DESC;
5. 小批量导入是查看导入状态的命令
curl --location-trusted -u {user}:{passwd} http://{hostname}:{port}/api/{database}/_load_info?label={labelname}
keyword
SHOW,LOAD
SHOW EXPORT
description
该语句用于展示指定的导出任务的执行情况
语法:
SHOW EXPORT
[FROM db_name]
[
WHERE
[EXPORT_JOB_ID = your_job_id]
[STATE = ["PENDING"|"EXPORTING"|"FINISHED"|"CANCELLED"]]
]
[ORDER BY ...]
[LIMIT limit];
说明:
1) 如果不指定 db_name,使用当前默认db
2) 如果指定了 STATE,则匹配 EXPORT 状态
3) 可以使用 ORDER BY 对任意列组合进行排序
4) 如果指定了 LIMIT,则显示 limit 条匹配记录。否则全部显示
example
1. 展示默认 db 的所有导出任务
SHOW EXPORT;
2. 展示指定 db 的导出任务,按 StartTime 降序排序
SHOW EXPORT FROM example_db ORDER BY StartTime DESC;
3. 展示指定 db 的导出任务,state 为 "exporting", 并按 StartTime 降序排序
SHOW EXPORT FROM example_db WHERE STATE = "exporting" ORDER BY StartTime DESC;
4. 展示指定db,指定job_id的导出任务
SHOW EXPORT FROM example_db WHERE EXPORT_JOB_ID = job_id;
keyword
SHOW,EXPORT
SHOW DELETE
description
该语句用于展示已执行成功的历史 delete 任务
语法:
SHOW DELETE [FROM db_name]
example
1. 展示数据库 database 的所有历史 delete 任务
SHOW DELETE FROM database;
keyword
SHOW,DELETE
SHOW ALTER
description
该语句用于展示当前正在进行的各类修改任务的执行情况
语法:
SHOW ALTER [CLUSTER | TABLE [COLUMN | ROLLUP] [FROM db_name]];
说明:
TABLE COLUMN:展示修改列的 ALTER 任务
TABLE ROLLUP:展示创建或删除 ROLLUP index 的任务
如果不指定 db_name,使用当前默认 db
CLUSTER: 展示集群操作相关任务情况(仅管理员使用!待实现...)
example
1. 展示默认 db 的所有修改列的任务执行情况
SHOW ALTER TABLE COLUMN;
2. 展示指定 db 的创建或删除 ROLLUP index 的任务执行情况
SHOW ALTER TABLE ROLLUP FROM example_db;
3. 展示集群操作相关任务(仅管理员使用!待实现...)
SHOW ALTER CLUSTER;
keyword
SHOW,ALTER
SHOW DATA
description
该语句用于展示数据量
语法:
SHOW DATA [FROM db_name[.table_name]];
说明:
如果不指定 FROM 子句,使用展示当前 db 下细分到各个 table 的数据量
如果指定 FROM 子句,则展示 table 下细分到各个 index 的数据量
example
1. 展示默认 db 的各个 table 的数据量及汇总数据量
SHOW DATA;
2. 展示指定 db 的下指定表的细分数据量
SHOW DATA FROM example_db.table_name;
keyword
SHOW,DATA
SHOW PARTITIONS
description
该语句用于展示分区信息
语法:
SHOW PARTITIONS FROM [db_name.]table_name [PARTITION partition_name];
example
1. 展示指定 db 的下指定表的分区信息
SHOW PARTITIONS FROM example_db.table_name;
1. 展示指定 db 的下指定表的指定分区的信息
SHOW PARTITIONS FROM example_db.table_name PARTITION p1;
keyword
SHOW,PARTITION
SHOW TABLET
description
该语句用于显示 tablet 相关的信息(仅管理员使用)
语法:
SHOW TABLET
[FROM [db_name.]table_name | tablet_id]
example
1. 显示指定 db 的下指定表所有 tablet 信息
SHOW TABLET FROM example_db.table_name;
2. 显示指定 tablet id 为 10000 的 tablet 的父层级 id 信息
SHOW TABLET 10000;
keyword
SHOW,TABLET
SHOW PROPERTY
description
该语句用于查看用户的属性
语法:
SHOW PROPERTY [FOR user] [LIKE key]
example
1. 查看 jack 用户的属性
SHOW PROPERTY FOR 'jack'
2. 查看 jack 用户导入cluster相关属性
SHOW PROPERTY FOR 'jack' LIKE '%load_cluster%'
keyword
SHOW, PROPERTY
SHOW BACKUP
description
该语句用于查看 BACKUP 任务
语法:
SHOW BACKUP [FROM db_name]
[WHERE LABEL = "backup_label" | LABEL LIKE "pattern"];
说明:
BACKUP 任务的状态(State)有以下几种:
PENDING:刚提交的
SNAPSHOT:正在执行快照
UPLOAD:准备上传数据
CHECK_UPLOAD:正在上传数据
FINISHING:即将结束
FINISHED:任务完成
CANCELLED:任务失败
失败的任务可以通过 ErrMsg 列失败查看原因。
example
1. 查看 example_db 下的所有 BACKUP 任务。
SHOW BACKUP FROM example_db;
2. 查看 example_db 下 LABEL 为 "backup_label" 的任务。
SHOW BACKUP FROM example_db WHERE LABEL = "backup_label";
3. 查看 example_db 下 LABEL 前缀为 "backup" 的任务。
SHOW BACKUP FROM example_db WHERE LABEL LIKE "backup%";
keyword
SHOW, BACKUP
SHOW RESTORE
description
该语句用于查看 RESTORE 任务
语法:
SHOW RESTORE [FROM db_name]
[WHERE LABEL = "restore_label" | LABEL LIKE "pattern"];
说明:
BACKUP 任务的状态(State)有以下几种:
PENDING:刚提交的
RESTORE_META:正在恢复元数据
DOWNLOAD_OBJS:准备恢复数据
DOWNLOADING:正在恢复数据
FINISHING:恢复完成,等待确认
FINISHED:任务完成
CANCELLED:任务失败
FINISHING 状态的任务需要通过 RESTORE COMMIT 语句进行确认生效,详见 RESTORE 语句
失败的任务可以通过 ErrMsg 列失败查看原因。
example
1. 查看 example_db 下的所有 RESTORE 任务。
SHOW RESTORE FROM example_db;
2. 查看 example_db 下 LABEL 为 "restore_label" 的任务。
SHOW RESTORE FROM example_db WHERE LABEL = "restore_label";
3. 查看 example_db 下 LABEL 前缀为 "restore" 的任务。
SHOW RESTORE FROM example_db WHERE LABEL LIKE "restore%";
keyword
SHOW, RESTORE
SHOW BACKENDS
description
该语句用于查看cluster内的节点
语法:
SHOW BACKENDS
keyword
SHOW, BACKENDS