华为云用户手册

  • 描述 使用LIKE子句可以在一个新表中包含一个已存在的表所有的列定义。可以使用多个LIKE来复制多个表的列。 如果使用了INCLUDING PROPERTIES,表的所有属性也会被复制到新表,该选项最多只能对一个表生效。 对于从表中复制过来的属性,可以使用WITH子句指定属性名进行修改。 默认使用EXCLUDING PROPERTIES属性。 对于带分区的表,如果用括号包裹like子句,复制的列定义不会包含分区键的信息。
  • 示例 创建基础表order01和order02 CREATE TABLE order01(id int,name string,tel string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'STORED AS TEXTFILE; CREATE TABLE order02(sku int, sku_name string, sku_describe string); 创建表orders_like01,它将包含表order01定义的列及表属性 CREATE TABLE orders_like01 like order01 INCLUDING PROPERTIES; 创建表orders_like02,它将包含表order02定义的列,并将表的存储格式设置为‘TEXTFILE’ CREATE TABLE orders_like02 like order02 STORED AS TEXTFILE; 创建表orders_like03,它将包含表order01定义的列及表属性,order02定义的列,以及额外的列c1和c2 CREATE TABLE orders_like03 (c1 int,c2 float,LIKE order01 INCLUDING PROPERTIES,LIKE order02); 创建表orders_like04和orders_like05,它们都会包含同一个表order_partition的定义,但orders_like04不会包含分区键信息,而orders_like05会包含分区键的信息 CREATE TABLE order_partition(id int,name string,tel string) PARTITIONED BY (sku int); CREATE TABLE orders_like04 (like order_partition); CREATE TABLE orders_like05 like order_partition; DESC orders_like04; Column | Type | Extra | Comment --------|---------|-------|--------- id | integer | | name | varchar | | tel | varchar | | sku | integer | | (4 rows) DESC orders_like05; Column | Type | Extra | Comment --------|---------|---------------|--------- id | integer | | name | varchar | | tel | varchar | | sku | integer | partition key | (4 rows)
  • 示例 用指定列的查询结果创建新表orders_column_aliased: CREATE TABLE orders_column_aliased (order_date, total_price) AS SELECT orderdate, totalprice FROM orders; 用表orders的汇总结果新建一个表orders_by_data: CREATE TABLE orders_by_date COMMENT 'Summary of orders by date' WITH (format = 'ORC') AS SELECT orderdate, sum(totalprice) AS price FROM orders GROUP BY orderdate; 如果表orders_by_date不存在,则创建表orders_by_date: CREATE TABLE IF NOT EXISTS orders_by_date AS SELECT orderdate, sum(totalprice) AS price FROM orders GROUP BY orderdate; 用和表orders具有相同schema创建新表empty_orders table,但是没数据: CREATE TABLE empty_orders AS SELECT * FROM orders WITH NO DATA; 使用VALUES 创建表,参考 VALUES。 分区表示例: CREATE EXTERNAL TABLE hetu_copy(corderkey, corderstatus, ctotalprice, corderdate, cds) PARTITIONED BY(cds) SORT BY (corderkey, corderstatus) COMMENT 'test' STORED AS orc LOCATION 'obs://{bucket}/user/hetuserver/tmp' TBLPROPERTIES (orc_bloom_filter_fpp = 0.3, orc_compress = 'SNAPPY', orc_compress_size = 6710422, orc_bloom_filter_columns = 'corderstatus,ctotalprice') as select * from hetu_test; CREATE TABLE hetu_copy1(corderkey, corderstatus, ctotalprice, corderdate, cds) WITH (partitioned_by = ARRAY['cds'], bucketed_by = ARRAY['corderkey', 'corderstatus'], sorted_by = ARRAY['corderkey', 'corderstatus'], bucket_count = 16, orc_compress = 'SNAPPY', orc_compress_size = 6710422, orc_bloom_filter_columns = ARRAY['corderstatus', 'ctotalprice'], external = true, format = 'orc', location = 'obs://{bucket}/user/hetuserver/tmp') as select * from hetu_test;
  • 语法 CREATE [EXTERNAL]① TABLE [IF NOT EXISTS] [catalog_name.][db_name.]table_name [ ( column_alias, ... ) ] [[PARTITIONED BY ①(col_name, ....)] [SORT BY① ([column [, column ...]])] ]① [COMMENT 'table_comment'] [ WITH ( property_name = expression [, ...] ) ]② [[STORED AS file_format]① [LOCATION 'obs_path']① [TBLPROPERTIES (orc_table_property = value [, ...] ) ] ]① AS query [ WITH [ NO ] DATA ]②
  • 限制 创建分区表时,如果bucket_count为-1且建表语句中未设置buckets,则使用默认值16。 默认外部表存储位置{lakeformation_catalog_url}/{schema_name}.db/{table_name},其中{lakeformation_catalog_url}对接的lakeformation catalog配置的location,{schema_name}为建表时使用的schema,{table_name}为表名。 不允许向托管表(表属性external = true)插入数据。
  • 描述 使用CREATE TABLE创建一个具有指定列的、新的空表。使用CREATE TABLE AS创建带数据的表。 使用可选参数IF NOT EXISTS,如果表已经存在则不会报错。 WITH子句可用于在新创建的表或单列上设置属性,如表的存储位置(location)、是不是外表(external)等。 LIKE子句用于在新表中包含来自现有表的所有列定义。可以指定多个LIKE子句,从而允许从多个表中复制列。如果指定了INCLUDING PROPERTIES,则将所有表属性复制到新表中。如果WITH子句指定的属性名称与复制的属性名称相同,则将使用WITH子句中的值。默认是EXCLUDING PROPERTIES属性,而且最多只能为一个表指定INCLUDING PROPERTIES属性。 PARTITIONED BY能够用于指定分区的列;CLUSTERED BY能够被用于指定分桶的列;SORT BY和 SORTED BY能够用于给指定的分桶列进行排序;BUCKETS能够被用于指定分桶数;EXTERNAL可用于指定创建外部表;STORED AS能被用于指定文件存储的格式;LOCATION能被用于指定在OBS上存储的路径。
  • 示例 创建一个新表orders,使用子句with指定创建表的存储格式、存储位置、以及是否为外表。 通过“auto.purge”参数可以指定涉及到数据移除操作(如DROP、DELETE、INSERT OVERWRITE、TRUNCATE TABLE)时是否清除相关数据: "auto.purge"='true'时,清除元数据和数据文件。 "auto.purge"='false'时,仅清除元数据,数据文件会移入OBS回收站。默认值为“false”,且不建议用户修改此属性,避免数据删除后无法恢复。 CREATE TABLE orders ( orderkey bigint, orderstatus varchar, totalprice double, orderdate date ) WITH (format = 'ORC', location='obs://bucket/user',orc_compress='ZLIB',external=true, "auto.purge"=false); -- 通过DESC FORMATTED 语句,可以查看建表的详细信息 desc formatted orders ; Describe Formatted Table ------------------------------------------------------------------------------ # col_name data_type comment orderkey bigint orderstatus varchar totalprice double orderdate date # Detailed Table Information Database: default Owner: admintest LastAccessTime: 0 Location: obs://bucket/user Table Type: EXTERNAL_TABLE # Table Parameters: EXTERNAL TRUE auto.purge false orc.compress.size 262144 orc.compression.codec ZLIB orc.row.index.stride 10000 orc.stripe.size 67108864 presto_query_id 20220812_084110_00050_srknk@default@HetuEngine presto_version 1.2.0-h0.cbu.mrs.320.r1-SNAPSHOT transient_lastDdlTime 1660293670 # Storage Information SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat Compressed: No Num Buckets: -1 Bucket Columns: [] Sort Columns: [] Storage Desc Params: serialization.format 1 (1 row) 创建一个新表,指定Row format: --建表时,指定表的字段分隔符为‘,’号(如果创建外表,要求数据文件中的每条记录的字段是以逗号进行分隔) CREATE TABLE student( id string,birthday string, grade int, memo string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; --建表时,指定字段分隔符为'\t',换行符为'\n' CREATE TABLE test( id int, name string , tel string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS TEXTFILE; 如果表orders不存在,则创建表orders,并且增加表注释和列注释: CREATE TABLE IF NOT EXISTS orders ( orderkey bigint, orderstatus varchar, totalprice double COMMENT 'Price in cents.', orderdate date ) COMMENT 'A table to keep track of orders.'; insert into orders values (202011181113,'online',9527,date '2020-11-11'), (202011181114,'online',666,date '2020-11-11'), (202011181115,'online',443,date '2020-11-11'), (202011181115,'offline',2896,date '2020-11-11'); 使用表orders的列定义创建表bigger_orders: CREATE TABLE bigger_orders ( another_orderkey bigint, LIKE orders, another_orderdate date ); SHOW CREATE TABLE bigger_orders ; Create Table --------------------------------------------------------------------- CREATE TABLE hive.default.bigger_orders ( another_orderkey bigint, orderkey bigint, orderstatus varchar, totalprice double, ordersdate date, another_orderdate date ) WITH ( external = false, format = 'ORC', location = 'obs://bucket/user/hive/warehouse/bigger_orders', orc_compress = 'GZIP', orc_compress_size = 262144, orc_row_index_stride = 10000, orc_stripe_size = 67108864 ) (1 row) 标号① 建表示例: CREATE EXTERNAL TABLE hetu_test (orderkey bigint, orderstatus varchar, totalprice double, orderdate date) PARTITIONED BY(ds int) SORT BY (orderkey, orderstatus) COMMENT 'test' STORED AS ORC LOCATION '/user' TBLPROPERTIES (orc_compress = 'SNAPPY', orc_compress_size = 6710422, orc_bloom_filter_columns = 'orderstatus,totalprice'); 标号② 建表示例: CREATE EXTERNAL TABLE hetu_test1 (orderkey bigint, orderstatus varchar, totalprice double, orderdate date) COMMENT 'test' PARTITIONED BY(ds int) CLUSTERED BY (orderkey, orderstatus) SORTED BY (orderkey, orderstatus) INTO 16 BUCKETS STORED AS ORC LOCATION '/user' TBLPROPERTIES (orc_compress = 'SNAPPY', orc_compress_size = 6710422, orc_bloom_filter_columns = 'orderstatus,totalprice'); 标号③ 建表示例: CREATE TABLE hetu_test2 (orderkey bigint, orderstatus varchar, totalprice double, orderdate date, ds int) COMMENT 'This table is in Hetu syntax' WITH (partitioned_by = ARRAY['ds'], bucketed_by = ARRAY['orderkey', 'orderstatus'], sorted_by = ARRAY['orderkey', 'orderstatus'], bucket_count = 16, orc_compress = 'SNAPPY', orc_compress_size = 6710422, orc_bloom_filter_columns = ARRAY['orderstatus', 'totalprice'], external = true, format = 'orc', location = '/user');
  • 创建分区表 --创建schema CREATE SCHEMA hive.web WITH (location = 'obs://bucket/user'); --创建分区表 CREATE TABLE hive.web.page_views ( view_time timestamp, user_id bigint, page_url varchar, ds date, country varchar ) WITH ( format = 'ORC', partitioned_by = ARRAY['ds', 'country'], bucketed_by = ARRAY['user_id'], bucket_count = 50 ); --查看分区 SELECT * FROM hive.web."page_views$partitions"; ds | country ------------|--------- 2020-07-18 | US 2020-07-17 | US --插入数据 insert into hive.web.page_views values(timestamp '2020-07-17 23:00:15',bigint '15141','www.local.com',date '2020-07-17','US' ); insert into hive.web.page_views values(timestamp '2020-07-18 23:00:15',bigint '18148','www.local.com',date '2020-07-18','US' ); --查询数据 select * from hive.web.page_views; view_time | user_id | page_url | ds | country -------------------------|---------|---------------|------------|--------- 2020-07-17 23:00:15.000 | 15141 | www.local.com | 2020-07-17 | US 2020-07-18 23:00:15.000 | 18148 | www.local.com | 2020-07-18 | US
  • 语法 ① CREATE TABLE [ IF NOT EXISTS ] [catalog_name.][db_name.]table_name ( { column_name data_type [ NOT NULL ] [ COMMENT col_comment] [ WITH ( property_name = expression [, ...] ) ] | LIKE existing_table_name [ { INCLUDING | EXCLUDING } PROPERTIES ] } [, ...] ) [ COMMENT table_comment ] [ WITH ( property_name = expression [, ...] ) ] ② CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [catalog_name.][db_name.]table_name ( { column_name data_type [ NOT NULL ] [ COMMENT comment ] [ WITH ( property_name = expression [, ...] ) ] | LIKE existing_table_name [ { INCLUDING | EXCLUDING } PROPERTIES ] } [, ...] ) [COMMENT 'table_comment'] [PARTITIONED BY(col_name data_type, ....)] [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name, col_name, ...)] INTO num_buckets BUCKETS] ] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION 'obs_path'] [TBLPROPERTIES (orc_table_property = value [, ...] ) ] ③ CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [catalog_name.][db_name.]table_name ( { column_name data_type [ NOT NULL ] [ COMMENT comment ] [ WITH ( property_name = expression [, ...] ) ] | LIKE existing_table_name [ { INCLUDING | EXCLUDING } PROPERTIES ] } [, ...] ) [PARTITIONED BY(col_name data_type, ....)] [SORT BY ([column [, column ...]])] [COMMENT 'table_comment'] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION 'obs_path'] [TBLPROPERTIES (orc_table_property = value [, ...] ) ]
  • 示例 创建一个名为web的schema: CREATE SCHEMA web; 在指定路径创建schema,路径必须是obs的并行桶,路径末尾不能加/,指定路径兼容写法示例: CREATE SCHEMA test_schema_5 LOCATION 'obs://${bucket}/user/hive'; 在名为Hive的CATA LOG 下创建一个名为sales的schema: CREATE SCHEMA hive.sales; 如果当前catalogs下名为traffic的schema不存在时,则创建一个名为traffic的schema: CREATE SCHEMA IF NOT EXISTS traffic; 创建一个带属性的schema: CREATE DATABASE createtestwithlocation COMMENT 'Holds all values' LOCATION '/user/hive/warehouse/create_new' WITH dbproperties('name'='akku', 'id' ='9'); --通过describe schema|database 语句来查看刚创建的schema describe schema createtestwithlocation;
  • 浮点型 名称 描述 存储空间 取值范围 字面量 REAL 实数 32位 1.40129846432481707e-45 ~3.40282346638528860e+38,正或负 REAL DOUBLE 双精度浮点数,15到17个有效位,具体取决于使用场景,有效位位数并不取决于小数点位置 64位 4.94065645841246544e-324 ~1.79769313486231570e+308,正或负 DOUBLE FLOAT 单精度浮点数,6到9个有效位,具体取决于使用场景,有效位位数并不取决于小数点位置 32位 1.40129846432481707e-45 ~3.40282346638528860e+38,正或负 FLOAT 用法说明: 分布式查询使用高性能硬件指令进行单精度或者双精度运算时,由于每次执行的顺序不一样,在调用聚合函数,比如SUM(),AVG(),特别是当数据规模非常大时,达到数千万甚至数十亿,其运算结果可能会略有不同。这种情况下,建议使用DECIMAL数据类型来运算。 可以使用别名来指定数据类型。 示例: --创建具有float类型数据的表 CREATE TABLE float_t1 (float_col1 FLOAT) ; --插入具有float类型数据 insert into float_t1 values (float '3.50282346638528862e+38'); --查看数据 SELECT * FROM float_t1; float_col1 ------------ Infinity (1 row) --删除表 DROP TABLE float_t1; 当小数部分为0时,可以通过cast()转为对应范围的整数处理,小数部分会四舍五入。 示例: select CAST(1000.0001 as INT); _col0 ------- 1000 (1 row) select CAST(122.5001 as TINYINT); _col0 ------- 123 (1 row) 使用指数表达式时,可以将字符串转为对应类型。 示例: select CAST(152e-3 as double); _col0 ------- 0.152 (1 row) 父主题: 数据类型
  • 整数类型 表1 整数类型 名称 描述 存储空间 取值范围 字面量 TINYINT 微整数 8位 -128~127 TINYINT SMALLINT 小整数 16位 -32,768 ~ +32,767 SMALLINT INTEGER 整数 32位 -2,147,483,648 ~ +2,147,483,647 INT BIGINT 大整数 64位 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 BIGINT 示例: --创建具有TINYINT类型数据的表。 CREATE TABLE int_type_t1 (IT_COL1 TINYINT) ; --插入TINYINT类型数据 insert into int_type_t1 values (TINYINT'10'); --查看数据。 SELECT * FROM int_type_t1; it_col1 --------- 10 (1 row) --删除表。 DROP TABLE int_type_t1; 父主题: 数据类型
  • 布尔类型 “真”值的有效文本值是:TRUE、't'、'true'、'1'。 “假”值的有效文本值是:FALSE、'f'、'false'、'0'。 使用TRUE和FALSE是比较规范的用法(也是SQL兼容的用法)。 示例: select BOOLEAN '0'; _col0 ------- false (1 row) select BOOLEAN 'TRUE'; _col0 ------- true (1 row) select BOOLEAN 't'; _col0 ------- true (1 row) 父主题: 数据类型
  • 数据类型介绍 目前使用Hetu引擎建表时支持的数据类型有:tinyint,smallint,bigint,int,boolean,real,decimal,double,varchar,string,binary,varbinary,timestamp,date,char,array,row,map,struct。其余的类型在数据查询和运算时支持。 通常情况下,大部分非复合数据类型都可以通过字面量加字符串的方式来输入,示例为添加了一个json格式的字符串: select json '{"name": "aa", "sex": "man"}'; _col0 --------------------------------- {"name":"aa","sex":"man"} (1 row) 父主题: 数据类型
  • 排查原因 查询指定时段的内存使用率信息,具体操作请参见性能监控。“内存利用率”指标持续接近100%。 查询内存使用率超过95%的时间段内,“已逐出的键数量”和“命令最大时延”,均呈现显著上升趋势,表明存在内存不足的问题。 建议客户登录控制台,参考缓存分析和慢查询,执行大Key扫描和慢查询。如果实例没有设置过期时间,会导致存储数据太多,内存被占满。 Redis实例如果内存满了但是key不多,可能原因是客户端缓冲区(output buffer)占用过多的内存空间。 可以在Redis-cli客户端连接实例后,执行大key扫描命令:redis-cli --bigkeys,然后执行info,查看output buffer占用情况。
  • 处理措施 D CS 控制台提供了大Key和热Key的分析功能,可参考分析Redis实例大Key和热Key排查大key和热key。 Redis 3.0实例不支持热key分析,您可以通过配置告警的方式帮助您发现热key。 执行过期Key扫描释放已经过期的Key,或手动清理一些不需要的Key,释放空间。 其他优化建议: String类型数据的Value大小控制在10KB以内。 Hash、List、Set、Zset类数据结构,建议单Key中的元素不要超过5000个。 Key的命名前缀为业务缩写,禁止包含特殊字符(比如空格、换行、单双引号以及其他转义字符)。 Redis事务功能较弱,不建议过多使用。 短连接性能差,推荐使用带有连接池的客户端。 如果只是用于数据缓存,容忍数据丢失,建议关闭持久化(在实例参数配置中将appendonly参数修改为no即关闭AOF持久化)。 配置告警,便于提前发现大Key、热Key。 参考配置告警配置节点级别的内存利用率监控指标的告警。 如果某个节点存在大key,这个节点比其他节点内存使用率高很多,会触发告警,便于您发现潜在的大key。 参考配置告警配置节点级别的入网最大带宽、出网最大带宽、CPU利用率监控指标的告警。 如果某个节点存在热key,这个节点的带宽占用、CPU利用率都比其他节点高,该节点会容易触发告警,便于您发现潜在热key。 如果实例内存使用率通过以上方式仍然很高,请考虑在业务低峰期扩大实例规格。具体操作请参见变更实例规格。
  • 是否存在Redis的持久化重写操作 除单机及单副本Cluster集群实例外,华为云其他Redis实例默认开启AOF数据落盘,实例开启了AOF持久化功能后,会定期进行AofRewrite的磁盘整理,AOF磁盘持久化整理一般在以下2种场景执行: 数据量写入不大,AOF文件不大时,固定在每天的凌晨1-4点进行AOF持久化重写。所以容易出现这个时间点实例CPU使用率超高的现象。 数据量写入过大,AOF文件大小超过阈值(缓存实例容量的3-5倍)时,不论当前的所处的时间,会自动触发后台AOF持久化重写。 Redis的持久化重写操作(Bgsave或Bgrewriteaof)比较消耗CPU资源(请参考为什么使用Fork执行Bgsave和Bgrewriteaof),Bgsave和Bgrewriteaof会调用系统的Fork机制,造成CPU短暂时间冲高。 如果客户没有需要用到持久化功能,建议将该功能关闭(请根据实际业务慎重操作,关闭持久化功能会导致极端故障场景下恢复时,由于没有落盘造成的数据丢失)。关闭操作:在实例详情页面,选择“配置参数”页签,将“appendonly”修改为“no”。
  • 查找并禁用高消耗命令 使用了keys等消耗资源的命令,高消耗资源的命令即时间复杂度为O(N)或更高的命令,通常情况下,命令时间复杂度越高,在执行时消耗的资源越高,这会导致CPU使用率超高,容易触发主备倒换。关于各命令对应的时间复杂度信息请参见Redis官网。例如,使用了keys等消耗资源的命令,导致CPU超高,建议客户改成scan命令或者禁用keys命令。 通过性能监控功能,确认CPU使用率高的具体时间段。 通过下述方法,找出高消耗的命令。 慢查询功能会记录执行超过指定时间阈值的命令,通过分析慢查询的语句和执行时长可帮助您找出高消耗命令,具体操参见慢查询。 通过实例诊断功能,选择CPU冲高的时间点进行诊断后,可以看到报告中的对应时间段命令的执行情况以及CPU耗时百分比,具体操作参见实例诊断。 处理措施。 评估并禁用高风险命令和高消耗命令,例如FLUSHALL、KEYS、HGETALL等。 优化业务,例如避免频繁执行数据排序操作。 可选:根据业务情况,选择下述方法对实例进行调整: 调整实例为读写分离实例,对高消耗命令或应用进行分流。 扩容实例增强实例处理能力。
  • 操作步骤 查询带宽使用率。 查询实例在指定时段的带宽使用率。具体操作请参见查看监控数据。 通常来说,“网络瞬时输入流量”和“网络瞬时输出流量”快速上升,并持续大于实例最大带宽的80%时,需引起注意,可能流量不足。 需关注的监控指标为带宽使用率如下图。带宽使用率的计算公式:带宽使用率=(网络瞬时输入流量+网络瞬时输出流量)/(2*最大带宽限制) * 100%。 图1 带宽使用率示例 其中,带宽使用率超过100%,不一定导致限流,有没有被流控需要看流控次数指标。 带宽使用率没有超过100%,也有可能有限流,因为带宽使用率是上报周期实时值,一个上报周期检查一次。流控检查是秒级的,有可能存在上报周期间隔期间,流量有秒级冲高,然后回落,待上报带宽使用率指标时已恢复正常。 优化带宽使用率。 当业务的访问量与预期带宽消耗不匹配,例如带宽使用率的增长趋势和QPS的增长趋势明显不一致(可结合网络瞬时输入流量和网络瞬时输出流量,分析业务是读业务和还是写业务导致的流量上涨)。对于单个节点带宽使用率上涨,您可以通过缓存分析功能,发现实例中存在的大Key,具体操作请参见大key分析。对大Key(通常大于10 KB)进行优化,例如将大Key拆分、减少对大Key的访问、删除不必要的大Key等。 经过上述步骤优化后流量使用率依旧较高,可评估升级至更大内存的规格,以承载更大的网络流量。具体操作请参见变更实例规格。也可以单独购买实例带宽,请参考调整DCS实例带宽。 在正式升级实例的规格前,您可以先购买一个按需付费的实例,测试要升级到的目标规格是否能够满足业务的负载需求,测试完成后可将其释放。释放实例请参考删除实例。
  • 如何禁用高危命令? 当前支持重命名的高危命令为command、keys、flushdb、flushall、hgetall、scan、hscan、sscan、和zscan,Proxy集群实例还支持dbsize和dbstats命令重命名,其他命令暂不支持重命名。高危命令重命名的操作方式,请参考命令重命名。 目前Redis不支持直接禁用命令,涉及到以上高危命令,可以使用命令重命名。关于DCS实例支持和禁用的命令请参考开源命令兼容性。 因为涉及安全性,页面不支持查询重命名后的命令。 同一个命令支持多次重命名,每次新的重命名操作会覆盖之前的重命名命令。 Redis 4.0及以上版本的实例支持命令重命名,Redis 3.0不支持。 父主题: Redis命令
  • 触发流控(限流)的原因和处理建议 什么是流控 DCS针对实例每个节点做了带宽消耗的限制,当某个节点短时间内消耗的带宽超过该节点的带宽限制(最大带宽)时,该节点会暂时不对客户端命令进行处理,以达到控制流量的目的,即产生流控。因此,Redis产生流控,说明Redis在周期内的使用流量超过该实例规格的最大带宽。 实例默认的最大带宽,可以查看实例规格中对应实例类型的“基准/最大带宽”。如果实例进行了调整带宽,最大带宽请以调整后的带宽为准。 如何判断是否产生流控 判断是否产生流控,请通过查看流控次数的监控指标,该指标大于0时,表示当前已使用的带宽超过最大带宽限制,产生流控。 带宽使用率不高时,也有可能有限流,因为带宽使用率是上报周期实时值,一个上报周期检查一次。而流控检查是秒级的,有可能存在上报周期间隔期间,流量有秒级冲高,然后回落,待上报带宽使用率指标时已恢复正常。 流控的影响 Redis产生流控,会暂时停止响应该节点客户端发来的请求(DCS侧不会丢弃暂停的请求,而是跳过此次处理待下次处理),从业务角度可能会造成业务的延迟增大,客户端连接异常等问题。 对流控的处理建议 对于主备实例: 如果实例一直有流控但是带宽使用率不高,这说明可能存在业务微突发问题,或者大Key热Key问题,建议对实例进行自动诊断分析,优先排除大Key热Key问题。 如果带宽使用率居高不下,说明带宽可能存在超限风险,需要扩容实例带宽。 对于集群实例: 仅有单个或少量几个分片出现流控,则多数为该分片存在大Key热Key问题。 所有或大多数分片同时出现流控或者带宽使用率高的问题,这说明实例的带宽达到了瓶颈,建议扩容实例带宽。 DCS控制台提供了大Key和热Key的分析功能,请参考分析Redis实例大Key和热Key减少大key和热key。 如果用户执行了keys等消耗资源的命令,也可能会导致CPU和带宽使用率增加,从而出现流控。可以通过查询Redis实例运行日志排查。 通过控制台的调整DCS实例带宽功能扩容Redis实例带宽,可以解决实例带宽超限的问题。 父主题: 监控告警
  • 静态流图 在OpenSource SQL作业编辑页面,单击“静态流图”按钮即可展示。 仅Flink 1.12和Flink 1.10版本支持查看简化流图。 Flink Opensource SQL作业中使用自定义函数时,不支持生成静态流图。 “静态流图”页面还支持以下功能: 支持资源预估。通过单击“静态流图”页面中的“资源预估”按钮,可进行资源预估。单击“恢复初始值”按钮,可在资源预估后恢复初始值。 支持展示页面缩放。 支持根据算子链展开/合并。 支持编辑“并行数”,“流量”和“命中率”。 并行数:一个任务的并发数。 流量:算子的数据流量,单位:条/s。 命中率:数据经过算子处理之后的保留率。命中率=算子的数据流出量/流入量,单位:%。 图5 静态流图
  • URI URI格式: DELETE /v2.0/{project_id}/resources/{resource_name} 参数说明 表1 URI参数说明 参数名称 是否必选 参数类型 说明 project_id 是 String 项目编号,用于资源隔离。获取方式请参考获取项目ID。 resource_name 是 String 上传的资源包名。 表2 query参数说明 参数名称 是否必选 参数类型 说明 group 否 String 上传资源包时,返回的资源组名。 带入query参数的URL示例如下: DELETE /v2.0/{project_id}/resources/{resource_name}?group={group}
  • URI URI格式: GET/v1.0/{project_id}/queues/{queue_name}/jobs/{job_id}?page-size=size¤t-page=page_number 参数说明 表1 URI 参数 名称 是否必选 说明 project_id 是 项目编号,用于资源隔离。获取方式请参考获取项目ID。 queue_name 是 当前所在的队列的名称,此SQL将使用当前队列的资源进行计算。 job_id 是 作业ID。 page-size 否 每页显示的最大结果行数,范围: [1, 100]。默认值为:50。 current-page 否 当前页码,默认为第一页。
  • 响应消息 表2 响应参数 参数 是否必选 参数类型 说明 is_success 否 Boolean 执行请求是否成功。“true”表示请求执行成功。 message 否 String 系统提示信息,执行成功时,信息可能为空。 job_id 否 String 作业ID。 job_type 否 String 作业类型,包含DDL、DCL、IMPORT、EXPORT、QUERY、INSERT。 目前仅支持查看“QUERY”类型作业的执行结果。 row_count 否 Integer 作业结果总条数。 input_size 否 long 作业执行过程中扫描的数据量。 schema 否 Array of Map 作业结果列名称和类型。 rows 否 Array of objects 作业结果集。
  • 示例 请求样例: None 成功响应样例: { "is_success": true, "message": "", "job_id": "ead0b276-8ed4-4eb5-b520-58f1511e7033", "job_type": "QUERY", "row_count": 1, "input_size": 74, "schema": [ { "c1": "int" }, { "c2": "string" } ], "rows": [ [ 23, "sda" ] ] } 调用API出错后,将不会返回上述结果,而是返回错误码和错误信息,详细介绍请参见错误码。
  • 请求示例 更新Flink Jar作业信息,更新后作业名称为test1,作业执行的队列为testQueue,关闭作业日志。 { "name": "test1", "desc": "job for test", "job_type": "flink_jar_job", "queue_name": "testQueue", "manager_cu_number": 1, "cu_number": 2, "parallel_number": 1, "log_enabled": false, "main_class": "org.apache.flink.examples.streaming.JavaQueueStream", "restart_when_exception": false, "entrypoint": "FemaleInfoCollec.jar", "dependency_jars": [ "myGroup/test.jar", "myGroup/test1.jar" ], "dependency_files": [ "myGroup/test.csv", "myGroup/test1.csv" ] }
  • 请求消息 表2 参数说明 参数名称 是否必选 参数类型 说明 name 否 String 作业名称。长度限制:0-57个字符。 desc 否 String 作业描述。长度限制:0-512个字符。 queue_name 否 String 队列名称。长度限制:1-128个字符。 cu_number 否 Integer 用户为作业选择的CU数量。默认值为“2”。 manager_cu_number 否 Integer 用户为作业选择的管理节点CU数量,对应为flink jobmanager数量。默认值为“1”。 parallel_number 否 Integer 用户为作业选择的并发量。默认值为“1”。 log_enabled 否 Boolean 是否开启作业日志。 开启:true 关闭:false 默认:false obs_bucket 否 String 当“log_enabled”为“true”时,用户授权保存日志的OBS桶名。 smn_topic 否 String 当作业异常时,向该 SMN 主题推送告警信息。 main_class 否 String 作业入口类。 entrypoint_args 否 String 作业入口类参数,多个参数之间空格分隔。 restart_when_exception 否 Boolean 是否开启异常重启功能,默认值为“false”。 entrypoint 否 String 用户已上传到 DLI 资源管理系统的程序包名,用户自定义作业主类所在的jar包。 Flink1.15推荐配置OBS中的程序包,不推荐使用DLI程序包。Flink1.15以上版本将不再支持读取DLI程序包。 示例:obs://bucket_name/test.jar dependency_jars 否 Array of Strings 用户已上传到DLI资源管理系统的程序包名,用户自定义作业的其他依赖包。 Flink1.15推荐配置OBS中的程序包,不推荐使用DLI程序包。Flink1.15以上版本将不再支持读取DLI程序包。 示例“obs://bucket_name/test1.jar, obs://bucket_name/test2.jar”。 dependency_files 否 Array of Strings 用户已上传到DLI资源管理系统的资源包名,用户自定义作业的依赖文件。 Flink1.15推荐配置OBS中的程序包,不推荐使用DLI程序包。Flink1.15以上版本将不再支持读取DLI程序包。 示例:"[obs://bucket_name/file1, obs://bucket_name/file2]"。 tm_cus 否 Integer 每个taskmanager的CU数,默认值为“1”。 tm_slot_num 否 Integer 每个taskmanager的slot数,默认值为“(parallel_number*tm_cus)/(cu_number-manager_cu_number)”。 feature 否 String 作业特性。表示用户作业使用的Flink镜像类型。 basic:表示使用DLI提供的基础Flink镜像。 custom:表示使用用户自定义的Flink镜像。 flink_version 否 String Flink版本。当用户设置“feature”为“basic”时,该参数生效。用户可通过与“feature”参数配合使用,指定作业运行使用的DLI基础Flink镜像的版本。 image 否 String 自定义镜像。格式为:组织名/镜像名:镜像版本。 当用户设置“feature”为“custom”时,该参数生效。用户可通过与“feature”参数配合使用,指定作业运行使用自定义的Flink镜像。关于如何使用自定义镜像,请参考《 数据湖探索 用户指南》。 resume_checkpoint 否 Boolean 异常重启是否从checkpoint恢复。 resume_max_num 否 Integer 异常重试最大次数,单位:次/小时。取值范围:-1或大于0。默认值为“-1”,表示无限次数。 checkpoint_path 否 String 用户Jar中checkpoint的储存地址,不同作业路径需要保持不同。 runtime_config 否 String Flink作业运行时自定义优化参数。 job_type 否 String 作业类型。 resource_config_version 否 String 资源配置版本。可选值 "v1" ,"v2".默认为“v1”。 v2版本对比于v1模版不支持设置CU数量,支持直接设置Job Manager Memory和Task Manager Memory。 v1:适用于Flink 1.12、Flink 1.13、Flink 1.15 v2:适用于Flink 1.13、Flink 1.15、Flink 1.17 优先推荐使用V2版本的参数设置。 resource_config 否 Object Flink 作业的资源配置。 具体参数说明请参考表3。 资源配置版本 为 "v2"时,配置生效,资源配置版本 为 "v1"时,配置无效。 表3 resource_config参数说明 参数名称 是否必选 参数类型 说明 max_slot 否 integer 该参数用于设置单个TaskManager可以提供的并行任务数量。每个Task Slot可以并行执行一个任务。增加 Task Slots 可以提高 TaskManager 的并行处理能力,但也会增加资源消耗。 Task Slots的数量与TaskManager的CPU数相关联,因为每个CPU可以提供一个Task Slot。 单TM Slot默认值为1。最小并行数不能小于1。 parallel_number 否 integer 作业的并行数,指作业中各个算子的并行执行的子任务的数量,算子的子任务数就是其对应算子的并行度。默认值为“1”。 jobmanager_resource_spec 否 Object JobManager资源规格。具体参数说明请参考表4。 taskmanager_resource_spec 否 Object TaskManager资源规格。具体参数说明请参考表5。 表4 jobmanager_resource_spec参数说明 参数名称 是否必选 参数类型 说明 cpu 否 double JobManager可以使用的CPU核数,默认值为1.0个CPU核数,最低不得小于0.5个CPU核数 memory 否 string JobManager可以使用的内存,单位MB,GB。默认GB。默认值为4GB,最低不得小于2G。 表5 taskmanager_resource_spec参数说明 参数名称 是否必选 参数类型 说明 cpu 否 double TaskManager可以使用的CPU核数,默认值为1.0个CPU核数,最低不得小于0.5个CPU核数 memory 否 string TaskManager可以使用的内存,单位MB,GB。默认GB。默认值为4GB,最低不得小于2G
  • 响应示例 { "is_success": true, "message": "", "connections": [ { "is_success": true, "message": "", "connection_id": "75419c22-7a31-42e4-a3f3-102f6e6895c9", "destination": "cloudtable-c172-zk3-WBFt4fr2.mycloudtable.com:2181,cloudtable-c172-zk2-LHZEWNau.mycloudtable.com:2181,cloudtable-c172-zk1-cvwY6lMh.mycloudtable.com:2181", "state": "DELETED", "process": 0, "name": "test", "connection_url": "", "cluster_name": "", "service": "CloudTable", "create_time": 1549092947256 } ] }
  • 响应消息 表2 响应参数 参数名称 是否必选 参数类型 说明 is_success 否 Boolean 执行请求是否成功。“true”表示请求执行成功。 message 否 String 系统提示信息,执行成功时,信息可能为空。 connections 否 Array of Objects 跨源连接信息列表,详细信息请参考表3。 count 否 Integer 跨源连接数量。 表3 connections参数 参数名称 是否必选 参数类型 说明 is_success 否 Boolean 执行请求是否成功。“true”表示请求执行成功。 message 否 String 系统提示信息,执行成功时,信息为空。 connection_id 否 String 连接ID,用于标识跨源连接的UUID。 destination 否 String 创建连接时,用户填写的队列的访问地址。 state 否 String 连接状态,具体状态请参见表4。 process 否 Double 正在创建的跨源连接进度,显示0.0至1.0代表0%至100%。 name 否 String 创建连接时,用户自定义的连接名称。 connection_url 否 String 用于建立跨源关联表时,需要使用到的连接url。 cluster_name 否 String Serverless Spark队列名称。SQL队列模式下建立的跨源连接,该字段为空。 service 否 String 创建连接时,用户指定的对端服务(CloudTable/CloudTable.OpenTSDB/ MRS .OpenTSDB/DWS/RDS/ CSS )。 create_time 否 Long 创建连接的时间。为UTC的时间戳。 queue_list 否 Array of Strings 经典跨源绑定的队列信息。 表4 连接状态 名称 含义 说明 CREATING 创建中 跨源连接正在创建中。 ACTIVE 已激活 跨源连接创建成功,与目的地址连接正常。 FAILED 已失败 跨源连接创建失败。 DELETED 已删除 跨源连接已被删除。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全