华为云用户手册

  • 登录Huawei Cloud Toolkit Platform JetBrains系列IDE中登录Huawei Cloud Toolkit Platform请参考:IntelliJ IDEA平台登录Huawei Cloud Toolkit Platform。 VSCode IDE中登录Huawei Cloud Toolkit Platform请参考:VSCode IDE平台登录Huawei Cloud Toolkit Platform。 CodeArts IDE登录Huawei Cloud Toolkit Platform请参考VSCode IDE登录过程。
  • 数据保护技术 HSS通过如下数据保护手段和特性,保障HSS中的数据安全可靠。 数据保护手段 说明 传输加密(HTTPS) 微服务间管理数据传输进行加密,防止数据在传输过程中泄露或被篡改。用户的配置数据传输采用安全协议HTTPS,防止数据被窃取。 数据冗余存储 资产信息、告警事件等数据存储均具备副本备份恢复能力。 数据加密 存储 HSS通过敏感数据加密保证用户数据的安全性。 除此之外,服务节点可开通HSS服务网页防篡改功能,实现对业务数据的防护。 网页防篡改功能开通详情请参见开启网页防篡改。 父主题: 安全
  • 请求示例 提交SQL作业,该作业执行的数据库为db1、队列为default,并为该作业设置标签workspace=space1;jobName=name1。 { "currentdb": "db1", "sql": "desc table1", "queue_name": "default", "conf": [ "dli.sql.shuffle.partitions = 200" ], "tags": [ { "key": "workspace", "value": "space1" }, { "key": "jobName", "value": "name1" } ] }
  • 响应示例 { "is_success": true, "message": "", "job_id": "8ecb0777-9c70-4529-9935-29ea0946039c", "job_type": "DDL", "job_mode":"sync", "schema": [ { "col_name": "string" }, { "data_type": "string" }, { "comment": "string" } ], "rows": [ [ "c1", "int", null ], [ "c2", "string", null ] ] }
  • 请求消息 表2 请求参数 参数名称 是否必选 参数类型 说明 sql 是 String 待执行的SQL语句。 currentdb 否 String SQL语句执行所在的数据库。当创建新数据库时,不需要提供此参数。 current_catalog 否 String 待提交作业的表的默认catalog。不填时默认使用 DLI catalog。 queue_name 否 String 待提交作业的队列名称,名称只能包含数字、英文字母和下划线,但不能是纯数字,且不能以下划线开头。 conf 否 Array of Strings 用户以“key/value”的形式设置用于此作业的配置参数。目前支持的配置项请参考表3。 tags 否 Array of Objects 作业的标签。具体请参考表4。 engine_type 否 String 选择执行作业的引擎类型。 表3 conf参数说明 参数名称 默认值 描述 spark.sql.files.maxRecordsPerFile 0 要写入单个文件的最大记录数。如果该值为零或为负,则没有限制。 spark.sql.autoBroadcastJoinThreshold 209715200 配置执行连接时显示所有工作节点的表的最大字节大小。通过将此值设置为“-1”,可以禁用显示。 说明: 当前仅支持运行命令ANALYZE TABLE COMPUTE statistics noscan的配置单元元存储表,和直接根据数据文件计算统计信息的基于文件的数据源表。 spark.sql.shuffle.partitions 200 为连接或聚合过滤数据时使用的默认分区数。 spark.sql.dynamicPartitionOverwrite.enabled false 当前配置设置为“false”时,DLI在覆盖写之前,会删除所有符合条件的分区。例如,分区表中有一个“2021-01”的分区,当使用INSERT OVERWRITE语句向表中写入“2021-02”这个分区的数据时,会把“2021-01”的分区数据也覆盖掉。 当前配置设置为“true”时,DLI不会提前删除分区,而是在运行时覆盖那些有数据写入的分区。 spark.sql.files.maxPartitionBytes 134217728 读取文件时要打包到单个分区中的最大字节数。 spark.sql.badRecordsPath - Bad Records的路径。 spark.sql.legacy.correlated.scalar.query.enabled false 该参数设置为true: 当子查询中数据不重复的情况下,执行关联子查询,不需要对子查询的结果去重。 当子查询中数据重复的情况下,执行关联子查询,会提示异常,必须对子查询的结果做去重处理,比如max(),min()。 该参数设置为false: 不管子查询中数据重复与否,执行关联子查询时,都需要对子查询的结果去重,比如max(),min(),否则提示异常。 dli.jobs.sql.resubmit.enable null 通过设置该参数可以控制在driver故障、队列重启时Spark SQL作业是否重新提交。 false:禁用作业重试,所有类型的命令都不重新提交,一旦driver故障,作业将标记为失败(FAILED)。 true:启用作业重试,即在driver故障时,所有类型的作业都将重新提交。 注意: 如果配置为true,在执行INSERT等幂等类型的操作时(例如insert into,load data、update),可能会导致数据一致性问题。即driver故障后作业重试,导致driver故障前已插入的数据被重复写入。 spark.sql.optimizer.dynamicPartitionPruning.enabled true 该配置项用于启用或禁用动态分区修剪。在执行SQL查询时,动态分区修剪可以帮助减少需要扫描的数据量,提高查询性能。 配置为true时,代表启用动态分区修剪,SQL会在查询中自动检测并删除那些不满足WHERE子句条件的分区,适用于在处理具有大量分区的表时。 如果SQL查询中包含大量的嵌套left join操作,并且表有大量的动态分区时,这可能会导致在数据解析时消耗大量的内存资源,导致Driver节点的内存不足,并触发频繁的Full GC。 在这种情况下,可以配置该参数为false即禁用动态分区修剪优化,有助于减少内存使用,避免内存溢出和频繁的Full GC。 但禁用此优化可能会降低查询性能,禁用后Spark将不会自动修剪掉那些不满足条件的分区。 表4 tags参数 参数名称 是否必选 参数类型 说明 key 是 String 标签的键。 说明: 标签的键的最大长度为128个字符,标签的键可以包含任意语种字母、数字、空格和_ . : =+-@ ,但首尾不能含有空格,不能以_sys_开头。 value 是 String 说明: 标签值的最大长度为255个字符,标签的值可以包含任意语种字母、数字、空格和_ . : =+-@ ,但首尾不能含有空格。
  • 响应消息 表5 响应参数 参数名称 是否必选 参数类型 说明 is_success 是 Boolean 请求发送是否成功。“true”表示请求发送成功。 message 是 String 系统提示信息,执行成功时,信息可能为空。 job_id 是 String 此SQL语句将生成并提交一个新作业,返回此作业的ID,可用于获取作业状态和作业结果。 job_type 是 String 作业类型。 DDL DCL IMPORT EXPORT QUERY INSERT schema 否 Array of Map 当语句类型为DDL时,返回其结果的列名称及类型。 rows 否 Array of objects 当语句类型为DDL,且dli.sql.sqlasync.enabled=false时,直接返回其执行结果。但是最多只能返回1000行。 如果超过1000行,请通过异步方式获取结果。即,提交作业时配置 xxxx = true, 然后从DLI配置的作业桶中获取结果。结果在作业桶上的路径可以通过ShowSqlJobStatus接口返回值中的result_path来获取。结果的全量数据会自动导出到作业桶。 job_mode 否 String 作业执行模式: async:异步 sync:同步
  • 功能介绍 该API用于通过执行SQL语句的方式向队列提交作业。 作业包含以下类型:DDL、DCL、IMPORT、QUERY和INSERT。其中,IMPORT与导入数据(废弃)的功能一致,区别仅在于实现方式不同。 另外,用户可使用其他API来对作业进行查询和管理。具体操作有: 查询作业状态 查询作业详细信息 查询作业结果-方式二(废弃) 导出查询结果 查询所有作业 取消作业(推荐) 该API当响应消息中“job_type”为“DCL”时,为同步操作。
  • 示例代码 计算所有商品库存(items)的样本方差。命令示例如下: select var_samp(items) from warehouse; 返回结果如下: _c0 294.342355 与group by配合使用,对所有商品按照仓库(warehourseId)进行分组,并计算同组商品库存(items)的样本方差。命令示例如下: select warehourseId, var_samp(items) from warehourse group by warehourseId; 返回结果如下: warehouseId _c1 city1 18.23124 city2 16.23344 city3 11.43425
  • 示例代码 计算所有商品库存(items)的方差。命令示例如下: select variance(items) from warehouse; --等效于如下语句。 select var_pop(items) from warehouse; 返回结果如下: _c0 203.42352 与group by配合使用,对所有商品按照仓库(warehourseId)进行分组,并计算同组商品库存(items)的方差。命令示例如下: select warehourseId, variance(items) from warehourse group by warehourseId; --等效于如下语句。 select warehourseId, var_pop(items) from warehourse group by warehourseId; 返回结果如下: 1 2 3 4 warehouseId _c1 city1 19.23124 city2 17.23344 city3 12.43425
  • 示例代码 返回1692149997。 select unix_timestamp('2023-08-16 09:39:57') 假设当前系统时间为2023-08-16 10:23:16,返回1692152596。 select unix_timestamp(); 返回1692115200(即2023-08-16 00:00:00)。 select unix_timestamp("2023-08-16 10:56:45", "yyyy-MM-dd"); 表数据示例 select timestamp1, unix_timestamp(timestamp1) as date1_unix_timestamp, timestamp2, unix_timestamp(datetime1) as date2_unix_timestamp, timestamp3, unix_timestamp(timestamp1) as date3_unix_timestamp from database_t;输出: +------------+-------------------------+-----------------------+---------------------- --+------------------------------------+----------------------------+ | timestamp1| date1_unix_timestamp | timestamp2 | date2_unix_timestamp | timestamp3 | date3_unix_timestamp | +------------+-------------------------+-----------------------+-------------------------+------------------------------------+----------------------------+ | 2023-08-02 | 1690905600000 | 2023-08-02 11:09:14 | 1690945754793 | 2023-01-11 00:00:00.123456789 | 1673366400000 | | 2023-08-03 | 1690992000000 | 2023-08-02 11:09:31 | 1690945771994 | 2023-02-11 00:00:00.123456789 | 1676044800000 | | 2023-08-04 | 1691078400000 | 2023-08-02 11:09:41 | 1690945781270 | 2023-03-11 00:00:00.123456789 | 1678464000000 | | 2023-08-05 | 1691164800000 | 2023-08-02 11:09:48 | 1690945788874 | 2023-04-11 00:00:00.123456789 | 1681142400000 | | 2023-08-06 | 1691251200000 | 2023-08-02 11:09:59 | 1690945799099 | 2023-05-11 00:00:00.123456789 | 1683734400000 | +------------+-------------------------+-----------------------+--------------------------+-----------------------------------+----------------------------+
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 timestamp 否 DATE或STRING 代表待转换的日期值。 格式: yyyy-mm-dd yyyy-mm-dd hh:mi:ss yyyy-mm-dd hh:mi:ss.ff3 pattern 否 STRING 代表需要转换的格式。 pattern为空时,默认为yyyy-MM-dd hh:mm:ss格式。 format:格式为代表年月日时分秒的时间单位与任意字符的组合,其中: yyyy代表年份。 MM代表月份。 dd代表天。 hh代表小时。 mi代表分钟。 ss代表秒。
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 date 是 DATE或STRING 需要处理的日期。 格式: yyyy-mm-dd yyyy-mm-dd hh:mi:ss yyyy-mm-dd hh:mi:ss.ff3 format 是 STRING 代表需要转换的目标日期格式。 format:格式为代表年月日时分秒的时间单位与任意字符的组合,其中: yyyy代表年份。 MM代表月份。
  • 示例代码 去除字符串 yxabcxx 的左右空格。命令示例如下。 返回字符串yxabcxx。 select trim(' yxabcxx '); 等效于如下语句。 select trim(both from ' yxabcxx '); select trim(from ' yxabcxx '); 去除字符串yxabcxx左右两端所有字符都在集合xy中的子串。 返回abc,只要左右两端遇到x或者y就会被去掉。 select trim('xy', 'yxabcxx'); 等效于如下语句。 select trim(both 'xy' from 'yxabcxx'); 输入参数为NULL。命令示例如下。 返回NULL。 select trim(null); select trim(null, 'yxabcxx');
  • 示例代码 为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表salary,并添加数据,命令示例如下: CREATE EXTERNAL TABLE salary ( dept_id STRING, -- 部⻔ user_id string, -- 员⼯ID sal INT -- 薪⽔ ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile; 添加数据如下: d1,user1/user4,1000/6000 d1,user2/user5,2000/7000 d1,user3/user6,3000 d2,user4/user7,4000 d2,user5/user8,5000/8000 执行SQL select trans_array(1, "/", dept_id, user_id, sal) as (dept_id, user_id, sal) from salary; 返回结果如下: d1,user1,1000 d1,user4,6000 d1,user2,2000 d1,user5,7000 d1,user3,3000 d1,user6,NULL d2,user4,4000 d2,user7,NULL d2,user5,5000 d2,user8,8000
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 timestamp 是 DATE STRING TINYINT SMALLINT INT BIGINT 代表待处理的时间。 DATE或STRING类型的日期值,或TINYINT、SMALLINT、INT或BIGINT类型的时间戳。 格式: yyyy-mm-dd yyyy-mm-dd hh:mi:ss yyyy-mm-dd hh:mi:ss.ff3 timezone 是 STRING 代表需要转换的目标时区。
  • 示例代码 返回2023-08-16 10:54:36 select to_date1('2023-08-16 10:54:36','yyyy-mm-dd hh:mi:ss'); 返回2023-08-16 00:00:00。 select to_date1('2023-08-16','yyyy-mm-dd'); 返回NULL。 select to_date1(null); 返回2023-08-16。 select to_date1('2023-08-16 10:54:36');
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 date 是 STRING 要转换的字符串。 格式: yyyy-mm-dd yyyy-mm-dd hh:mi:ss yyyy-mm-dd hh:mi:ss.ff3 format 是 STRING 代表需要转换的日期格式。 STRING类型常量,不支持日期扩展格式。 format:格式为代表年月日时分秒的时间单位与任意字符的组合,其中: yyyy代表年份。 mm代表月份。 dd代表天。 hh代表小时。 mi代表分钟。 ss代表秒。
  • 示例代码 返回静态数据示例2023-08*16。 select to_char('2023-08-16 10:54:36', '静态数据示例yyyy-mm*dd'); 返回20230816。 select to_char('2023-08-16 10:54:36', 'yyyymmdd'); 返回NULL。 select to_char('静态数据示例2023-08-16', '静态数据示例yyyy-mm*dd'); 返回NULL。 select to_char('20230816', 'yyyy'); 返回NULL。 select to_char('2023-08-16 10:54:36', null);
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 date 是 DATE 或 STRING 代表需要处理的日期。 格式为: yyyy-mm-dd yyyy-mm-dd hh:mi:ss yyyy-mm-dd hh:mi:ss.ff3 format 是 STRING 代表需要转换的目标日期格式。 STRING类型常量,不支持日期扩展格式。 format:格式为代表年月日时分秒的时间单位与任意字符的组合,其中: yyyy代表年份。 mm代表月份。 dd代表天。 hh代表小时。 mi代表分钟。 ss代表秒。
  • 示例代码 计算所有仓库的商品(items)总和。命令示例如下: select sum(items) from warehouse; 返回结果如下: _c0 55357 与group by配合使用,对所有商品按照仓库(warehouseId)进行分组,计算各仓库商品的总数(items)总和。命令示例如下: select warehouseId, sum(items) from warehouse group by warehouseId; 返回结果如下: warehouseId| _c1 city1 15500 city2 10175 city3 19400
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 str 是 STRING 如果输入为BIGINT、DECIMAL、DOUBLE或DATETIME类型,则会隐式转换为STRING类型后参与运算。 start_position 是 BIGINT 表示起始位置。默认起始位置为1。 如果start_position取值为正,则从左边开始。如果start_position取值为负,则从右边开始。 length 否 BIGINT 表示子串的长度值。值必须大于0。
  • 示例代码 计算所有商品库存(items)的样本偏差。命令示例如下: select stddev_samp(items) from warehouse; 返回结果如下: +------------+ | _c0 | +------------+ | 1.342355 | +------------+ 与group by配合使用,对所有商品按照仓库(warehourseId)进行分组,并计算同组商品库存(items)的样本偏差。命令示例如下: select warehourseId, stddev_samp(items) from warehourse group by warehourseId; 返回结果如下: +------------+------------+ | warehouseId| _c1 | +------------+------------+ | city1 | 1.23124 | | city2 | 1.23344 | | city3 | 1.43425 | +------------+------------+
  • 示例代码 计算所有商品库存(items)的偏差。命令示例如下: select stddev_pop(items) from warehouse; 返回结果如下: _c0 1.342355 与group by配合使用,对所有商品按照仓库(warehourseId)进行分组,并计算同组商品库存(items)的偏差。命令示例如下: select warehourseId, stddev_pop(items) from warehourse group by warehourseId; 返回结果如下: warehouseId _c1 city1 1.23124 city2 1.23344 city3 1.43425
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 str 是 STRING 待拆分的字符串。 separator 是 STRING STRING类型常量。拆分用的分隔符,可以是一个字符,也可以是一个字符串。 start 是 STRING BIGINT类型常量,必须大于0。表示返回段的开始编号(从1开始)。 end 否 BIGINT BIGINT类型常量,大于等于start。表示返回段的截止编号,可省略,缺省时表示和start取值相等,返回start指定的段。
  • 返回值说明 返回STRING类型的值。 如果start的值大于切分后实际的分段数,例如字符串拆分完有4个片段,start大于4,返回空串。 如果separator不存在于str中,且start指定为1,返回整个str。如果str为空串,则输出空串。 如果separator为空串,则返回原字符串str。 如果end大于片段个数,返回从start开始的子串。 str非STRING、BIGINT、DOUBLE、DECIMAL或DATETIME类型时,返回报错。 start或end非BIGINT类型常量时,返回报错。 除separator外,如果任一参数值为NULL,返回NULL。
  • 示例代码 返回aa。 select split_part('aa,bb,cc,dd', ',', 1); 返回aa,bb。 select split_part('aa,bb,cc,dd', ',', 1, 2); 返回空串。 select split_part('aa,bb,cc,dd', ',', 10); 返回aa,bb,cc,dd。 select split_part('aa,bb,cc,dd', ':', 1); 返回空串。 select split_part('aa,bb,cc,dd', ':', 2); 返回aa,bb,cc,dd。 select split_part('aa,bb,cc,dd', '', 1); 返回bb,cc,dd。 select split_part('aa,bb,cc,dd', ',', 2, 6); 返回NULL。 select split_part('aa,bb,cc,dd', ',', null);
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 a 是 DOUBLE、BIGINT、DECIMAL、STRING类型。 参数a的格式包括浮点数格式、整数格式、字符串格式。 当参数a非BIGINT类型时,会隐式转换为BIGINT类型后参与运算。 b 是 DOUBLE、BIGINT、DECIMAL、STRING类型。 参数b的格式包括浮点数格式、整数格式、字符串格式。 当参数b非BIGINT类型时,会隐式转换为BIGINT类型后参与运算。
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 a 是 DOUBLE、BIGINT、DECIMAL、STRING类型。 参数a的格式包括浮点数格式、整数格式、字符串格式。 当参数a非BIGINT类型时,会隐式转换为BIGINT类型后参与运算。 b 是 DOUBLE、BIGINT、DECIMAL、STRING类型。 参数b的格式包括浮点数格式、整数格式、字符串格式。 当参数b非BIGINT类型时,会隐式转换为BIGINT类型后参与运算。
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 a 是 DOUBLE、BIGINT、DECIMAL、STRING类型。 参数a的格式包括浮点数格式、整数格式、字符串格式。 当参数a非BIGINT类型时,会隐式转换为BIGINT类型后参与运算。 b 是 DOUBLE、BIGINT、DECIMAL、STRING类型。 参数a的格式包括浮点数格式、整数格式、字符串格式。 当参数b非BIGINT类型时,会隐式转换为BIGINT类型后参与运算。
  • 示例代码 去除字符串 yxabcxx 的右边空格。命令示例如下。 返回字符串 yxabcxx。 select rtrim('yxabcxx '); 等效于如下语句。 select trim(trailing from ' yxabcxx '); 去除字符串yxabcxx右端所有字符都在集合xy中的子串。 返回yxabc,只要右端遇到x或者y就会被去掉。 select rtrim('xy', 'yxabcxx'); 等效于如下语句。 select trim(trailing 'xy' from 'yxabcxx'); 输入参数为NULL。命令示例如下。 返回NULL。 select rtrim(null); select ltrim('yxabcxx', 'null');
共100000条