华为云用户手册

  • 窗口函数 窗口函数差异说明:MySQL数据库管理系统在调用窗口函数时,OVER子句中的ORDER BY子句与PARTITION BY子句不支持使用列别名, GaussDB数据库 支持使用列别名。 表1 窗口函数列表 MySQL数据库 GaussDB 数据库 差异 LAG() 支持,存在差异 偏移量N的取值范围不同: MySQL中,N只允许是在范围[0, 263-1]整数值。 GaussDB中,N只允许是在范围[0, 231-1]整数值。 偏移量N的取值形式不同: MySQL中,取值形式如下: 常量字面量的无符号整数。 prepare语句中使用?声明的标记参数。 用户自定义的变量。 存储过程中的局部变量。 GaussDB中,取值形式如下: 常量字面量的无符号整数。 不支持在prepare语句中使用?声明的标记参数(prepare语句当前有差异)。 用户自定义的变量。 不支持使用存储过程中的局部变量(PLSQL当前不支持)。 ORDER BY子句排序时NULL值的排序不同: MySQL中,NULL值默认升序排在前面。 GaussDB中,NULL值默认升序排在后面。 二进制字符串显示不同: MySQL中,会显示二进制字符串编码成16进制后的编码值(例如'-4'会显示成编码后的0x2D34)。 GaussDB中,会显示原字符串的值(例如'-4'会保持显示'-4')。 结合CREATE TABLE AS语法创建出的表,使用DESC查看表结构时,存在以下差异: MySQL 8.0中: 对于表中的列类型(Type)为BIGINT类型或INT类型时不显示宽度。 对于表中的列类型(Type)的宽度为0时,显示宽度,如binary(0)。 GaussDB中: 对于表中的列类型(Type)为BIGINT类型或INTEGER类型时会显示宽度。 对于表中的列类型(Type)的宽度为0时,不显示宽度,如binary(0)只显示成binary。 表结构中标识Null和Default值的列,功能暂未实现。 该函数作为子查询结合CREATE TABLE AS使用时,单独执行该函数的子查询语句没有报错或告警时: GaussDB在严格模式和宽松模式下,CREATE TABLE AS语句执行成功,建表成功。 MySQL在严格模式下,CREATE TABLE AS语句执行可能报错,建表失败。 LEAD() 支持,存在差异 与LAG()函数差异点相同。 ROW_NUMBER() 支持,存在差异 ORDER BY子句排序时,NULL值的排序不同: MySQL中,NULL值默认升序排在前面。 GaussDB中,NULL值默认升序排在后面。 父主题: 系统函数
  • 网络地址函数 表1 网络地址函数列表 MySQL数据库 GaussDB数据库 差异 INET_ATON() 支持 - INET_NTOA() 支持 - INET6_ATON() 支持 - INET6_NTOA() 支持,存在差异 GaussDB中,有效入参类型支持VARBINARY或BINARY类型; MySQL中,有效入参类型还支持TINYBLOB、MEDIUMBLOB、LONGBLOB或BLOB类型。 IS_IPV6() 支持 - IS_IPV4() 支持 - 父主题: 系统函数
  • 字符串函数 表1 字符串函数列表 MySQL数据库 GaussDB数据库 差异 ASCII() 支持 - BIT_LENGTH() 支持 - CHAR_LENGTH() 支持,存在差异 GaussDB此函数如果数据库字符集是SQL_ASCII,CHAR_LENGTH()会返回字节数而非字符数。 CHARACTER_LENGTH() 支持,存在差异 GaussDB此函数如果数据库字符集是SQL_ASCII,CHARACTER_LENGTH()会返回字节数而非字符数。 CONCAT() 支持,存在差异 当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为BLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 CONCAT_WS() 支持,存在差异 当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为BLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 HEX() 支持 - LENGTH() 支持 - LPAD() 支持,存在差异 MySQL默认最大填充长度为1398101,GaussDB默认最大长度为1048576。在不同字符集下,最大填充长度会有差异,例如字符集为GBK时,GaussDB默认最大长度为2097152。 当 GaussDB使用 的字符编码是SQL_ASCII时,服务器会根据ASCII标准对字节值0~127进行解释,而字节值128~255则当作无法解析的字符。如果该函数的输入输出包含了任何非ASCII数据,数据库将无法帮助用户转换或者校验非ASCII字符,从而与MySQL的行为产生较大差异。 当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为BLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 MD5() 支持,存在差异 当BINARY类型插入字符串长度小于目标长度时,GaussDB填充符和MySQL不同;因此导致入参为BINARY类型时,函数结果和MySQL不一致。 RANDOM_BYTES() 支持,存在差异 GaussDB与MySQL都使用OPENSSL生成随机字符串。GaussDB使用OPENSSL3.x.x生成随机字符串,与使用OPENSSL1.x.x版本的MySQL相比性能可能存在劣化。 REPEAT() 支持,存在差异 当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为BLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 REPLACE() 支持,存在差异 当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为BLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 当第三个入参为null,且第二个入参的字符串长度不为0时,GaussDB返回NULL,MySQL可能返回第一个参数的字符。 RPAD() 支持,存在差异 MySQL默认最大填充长度为1398101,GaussDB默认最大长度为1048576。在不同字符集下,最大填充长度会有差异,例如字符集为GBK时,GaussDB默认最大长度为2097152。 当GaussDB使用的字符编码是SQL_ASCII时,服务器会根据ASCII标准对字节值0~127进行解释,而字节值128~255则当作无法解析的字符。如果该函数的输入输出包含了任何非ASCII数据,数据库将无法帮助用户转换或者校验非ASCII字符,从而与MySQL的行为产生较大差异。 当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为BLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 SHA()/SHA1() 支持 - SHA2() 支持 - SPACE() 支持 - STRCMP() 支持,存在差异 当GaussDB使用的字符编码是SQL_ASCII时,服务器会根据ASCII标准对字节值0~127进行解释,而字节值128~255则当作无法解析的字符。如果该函数的输入输出包含了任何非ASCII数据,数据库将无法帮助用户转换或者校验非ASCII字符,从而与MySQL的行为产生较大差异。 FIND_IN_SET() 支持,存在差异 当GaussDB使用的字符编码是SQL_ASCII时,服务器会根据ASCII标准对字节值0~127进行解释,而字节值128~255则当作无法解析的字符。如果该函数的输入输出包含了任何非ASCII数据,数据库将无法帮助用户转换或者校验非ASCII字符,从而与MySQL的行为产生较大差异。 当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为BLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 SUBSTRING 函数在第一个入参为嵌套场景下与MySQL存在差异: 第一个入参节点返回的字符序为BINARY时,MySQL可能依旧以不同的字符序逻辑处理(取决于内层嵌套的函数),而GaussDB以BINARY字符序进行函数处理,导致截取的字节长度不同。 SUBSTRING_INDEX函数存在差异: 在第三个入参为负数时,MySQL与GaussDB的比较逻辑不同,会导致结果可能存在差异。 当第三个入参为正数时,由于MySQL 5.7以int32位存储,会存在回绕问题导致结果不正确。MySQL 8.0修复了该问题以int64为存储,GaussDB以8.0为准。当入参值超过2^63 -1时,也会发生回绕,可能导致第三个参数获取为负数,结果存在差异。 LCASE() LEFT() LOWER() LTRIM() REVERSE() RIGHT() RTRIM() SUBSTR() SUBSTRING() SUBSTRING_INDEX() TRIM() UCASE() UPPER() UNHEX() 支持,存在差异 MySQL的返回值类型为BINARY、VARBINARY、BLOB、MEDIUMBLOB或LONGBLOB;GaussDB返回值类型固定为LONGBLOB。 FIELD() 支持 - COMPRESS() 支持,存在差异 MySQL返回类型为VARBINARY、BLOB或LONGBLOB;GaussDB返回二进制字符串类型LONGBLOB。 UNCOMPRESS() 支持 - UNCOMPRESS_LENGTH() 支持 - EXPORT_SET() 支持 - POSITION() 支持 - LOCATE() 支持 - CHAR() 支持,存在差异 CHAR函数指定字符集时,若转码失败,GaussDB产生报错,MySQL提示WARNING并返回NULL。 MySQL在参数为ASCII表中第0~31个和127个码值时,返回结果不可见,GaussDB会以\x01、\x02等16进制返回。 MySQL中CHAR函数入参个数无限制,GaussDB函数的入参不超过8192个。 ELT() 支持,存在差异 MySQL中ELT函数入参个数无限制,GaussDB函数的入参不超过8192个。 FORMAT() 支持 - BIN() 支持 - MAKE_SET() 支持,存在差异 MySQL 5.7版本,当MAKE_SET函数选中的第一个参数为整型、浮点型或定点型且返回结果中存在非ASCII字符,显示结果可能为乱码;GaussDB显示结果正常,和MySQL 8.0版本保持一致。 TO_BASE64() 支持 - FROM_BASE64() 支持 - ORD() 支持 - MID() 支持 - QUOTE() 支持,存在差异 当入参字符串中含“\0”时,GaussDB中由于字符集不支持导致无法输入。由转义字符导致的本函数与MySQL的差异,与本函数无关。 GaussDB最大支持1GB数据传输,str入参长度最大支持536870908,函数返回结果字符串最大支持1GB。 入参为固定长度BINARY类型时,对于未填充字符:MySQL默认补充空字符“\0”,GaussDB默认补充空格。 在MySQL中,QUOTE()会处理空字符,GaussDB中,QUOTE()无法处理空字符。 INSERT() 支持 - INSTR() 支持 - 父主题: 系统函数
  • 流程控制函数 表1 流程控制函数列表 MySQL数据库 GaussDB数据库 差异 IF() 支持,存在差异 当第一个参数为TRUE且第三个参数表达式中存在隐式类型转换错误,或者第一个参数为FALSE且第二个参数表达式中存在隐式类型转换错误时,MySQL会忽略该错误,GaussDB会提示类型转换错误。 IFNULL() 支持,存在差异 第一个参数不为NULL且第二个参数表达式中存在隐式类型转换错误时,MySQL会忽略该错误,GaussDB会提示类型转换错误。 NULLIF() 支持,存在差异 函数返回值类型在MySQL 5.7和MySQL 8.0中存在差异,考虑到MySQL 8.0更合理,因此函数返回值类型兼容MySQL 8.0。 父主题: 系统函数
  • 字符串数据类型 表1 字符串数据类型 MySQL数据库 GaussDB数据库 差异 CHAR(M) 支持,存在差异 输入格式:输入二进制或十六进制字符串时,GaussDB输出为十六进制,MySQL中根据ASCII码表转义,无法转义的输出为空。 VARCHAR(M) 支持,存在差异 输入格式: GaussDB的自定义函数参数和返回值不支持长度校验,存储过程参数不支持长度校验,MySQL支持。 GaussDB的自定义函数和存储过程中的临时变量支持长度校验以及严格宽松模式下的报错和截断告警,MySQL不支持。 输入二进制或十六进制字符串时,GaussDB输出为十六进制,MySQL中根据ASCII码表转义,无法转义的输出为空。 TINYTEXT 支持,存在差异 输入格式: 默认值:创建表列时语法上允许设置默认值,MySQL不允许设置默认值。 输入二进制或十六进制字符串时,GaussDB输出为十六进制,MySQL中根据ASCII码表转义,无法转义的输出为空。 主键:MySQL中TINYTEXT类型不支持主键,GaussDB支持。 索引:MySQL中TINYTEXT类型不支持除前缀索引外其他索引方法,GaussDB支持。 外键:MySQL中TINYTEXT类型不支持作为外键的参考列/被参考列,GaussDB支持。 TEXT 支持,存在差异 输入格式: 默认值:创建表列时语法上允许设置默认值,MySQL不允许设置默认值。 输入二进制或十六进制字符串时,GaussDB输出为十六进制,MySQL中根据ASCII码表转义,无法转义的输出为空。 主键:MySQL中TEXT类型不支持主键,GaussDB支持。 索引:MySQL中TEXT类型不支持除前缀索引外其他索引方法,GaussDB支持。 外键:MySQL中TINYTEXT类型不支持作为外键的参考列/被参考列,GaussDB支持。 MEDIUMTEXT 支持,存在差异 输入格式: 默认值:创建表列时语法上允许设置默认值,MySQL不允许设置默认值。 输入二进制或十六进制字符串时,GaussDB输出为十六进制,MySQL中根据ASCII码表转义,无法转义的输出为空。 主键:MySQL中MEDIUMTEXT类型不支持主键,GaussDB支持。 索引:MySQL中MEDIUMTEXT类型不支持除前缀索引外其他索引方法,GaussDB支持。 外键:MySQL中TINYTEXT类型不支持作为外键的参考列/被参考列,GaussDB支持。 LONGTEXT 支持,存在差异 输入格式: GaussDB只支持不超过1G字节长度,MySQL支持4G-1字节长度。 默认值:创建表列时语法上允许设置默认值,MySQL不允许设置默认值。 输入二进制或十六进制字符串时,GaussDB输出为十六进制,MySQL中根据ASCII码表转义,无法转义的输出为空。 主键:MySQL中LONGTEXT类型不支持主键,GaussDB支持。 索引:MySQL中LONGTEXT类型不支持除前缀索引外其他索引方法,GaussDB支持。 外键:MySQL中TINYTEXT类型不支持作为外键的参考列/被参考列,GaussDB支持。 父主题: 数据类型
  • 方案架构 【解决方案架构】 方案主要由华为云的工业底座+添翼D2M产品形成面向汽车零部件离散制造业全流程的制造运营管理解决方案。 添翼D2M系统完整地覆盖了从工艺策划到制造运营,具体而言,其包括设计策划与制造,结构化工艺设计策划、自动调度、过程管控、可视化与绩效。基于系统的一体化,D2M可以用统一语言来描述从策划到运营的全过程,同时支持工艺策划、生产调度、质量管控、数据采集分析四个层面,有能力满足小批量多品种的生产模式,可以应对不断变化的业务需求,并且遵守GBT20720/ISA95标准以及与别的系统无缝集成。 架构如下: 图1 业务架构图 通过上云使用CCE和RDS,实现高效日常运维和突发异常解决,降低客户的运维成本。 具备工艺策划、计划调度、过程管控、生产数据采集四个层次的能力,实现从工艺规划到制造运营⼀体化管控,覆盖企业生产、质量、存货和维护四个运营模块。此MOM系统具备PLM系统的工艺规划功能,可降低客户软件的购买成本30%,提高客户运营效率20%,切实将提质降本增效落到实处。 支持通过集成图像识别Image、 文字识别 OCR、 语音交互 服务SIS等服务,以低成本联创的方式实现自动巡检点和自动上料报工等智能功能,解决人工操作慢且易出错的痛点,使得生产管控更精细更智能,可释放客户产线2 ~ 3个人力。 【技术架构】 图2 部署架构图 通过使用CCE,实现高效交付,实现容器化部署,简化运维; 通过使用CDN + OBS,解决生产资料访问慢的问题,提升使用体验; 通过集成RDS,提升日常运维效率,保障数据安全; 通过集成图像识别Image,实现自动计件,解决人工计件慢和易出错问题; 通过集成OCR,实现来料和入仓自动录单,下料时对比防错,解决人工录入慢和易出错问题; 通过集成语音交互服务SIS,实现语音人机交互,释放客户产线人力,提高生产异常响应能力; 通过集成IoTDA,实现支持接高吞吐量的物联网设备,提高设备接入可靠性,支持规模客户。
  • 应用场景 【透明工厂:汽车零部件“透明工厂”的系统改造】 客户的痛点: 工单的生产进度不及时、不透明。 产品质量追溯不清晰、不体系。 车间现场的在制品信息不透明。 生产过程中发生的异常不透明。 仓库管理混乱,账物不符。 通过本方案实现的业务效果:通过添翼D2M制造运营管理系统,实时收集与分析各生产节点及生产过程中的业务数据,并披露数据到相应的岗位人员。用系统通过数据驱动人员去解决问题,提高现场处理的效率和信息的透明。 【可控工厂:汽车零部件“可控工厂”的系统改造】 客户的痛点: 生产过程4M1E不透明,缺乏有效防错控制。 工时不准,节拍不稳,生产效率较低。 质量控制计划执行不到位,没有监督机制。 现场的不良品围堵不到位,造成不良品外流。 没有准确的质量追溯体系(人机料法环测)。 通过本方案实现的业务效果:通过添翼D2M制造运营管理系统,建立工艺标准、工艺资源和质量控制计划,对车间的生产过程进行管控与监督,过程防错,帮助企业降本增效。 【数字化工厂:汽车零部件“数字化工厂”的系统改造】 客户的痛点: 全过程协调能力差,内耗严重。 计划与生产矛盾,计划部与生产部互相抱怨。 不能及时全面提供各项绩效指标、管理报表等资料,缺少准确的决策依据。 通过本方案实现的业务效果:通过添翼D2M制造运营管理系统,整合运营四大模块:生产、维护、质量和存货。以计划排程为统一驱动,达到企业生产制造的协同运营。
  • 方案优势 一体管控,降本增效:具备工艺策划、计划调度、过程管控、生产数据采集四个层次的能力,实现从工艺规划到制造运营⼀体化管控,覆盖企业生产、质量、存货和维护四个运营模块。此MOM系统具备PLM系统的工艺规划功能,可降低客户软件的购买成本30%,提高客户运营效率20%,切实将提质降本增效落到实处。 兼容性强,无缝集成:系统架构遵循ISA95国际标准,能以更低成本更高效率与国际化产品(如SAP、西门子的系统)实现无缝集成。业务架构遵循IATF1694体系,降低客户交付实施成本。 标准实施,简化运维:通过上云使用CCE和RDS,实现高效日常运维和突发异常解决,降低伙伴和客户的运维成本。对客户,每年可节省至少15人天工作量。对伙伴,除了可节省每月一次前往客户现场例行检查的成本支出,更重要的是建立了中心化平台化的运营模式,可创造新的商业模式。 智能创新,释放人力:通过集成图像识别Image、文字识别OCR、语音交互服务SIS等服务,以低成本联创的方式实现自动巡检点和自动上料报工等智能功能,解决人工操作慢且易出错的痛点,使得生产管控更精细更智能,可释放客户产线2 ~ 3个人力,为客户每年节省20万左右人力成本。
  • 资源和成本规划 表1 D2M制造运营管理系统集成架构-D2M制造运营管理系统集成架构(HC) 云服务 规格 数量 计费模式 是否必须 参考价格 云堡垒机 实例类型: 单机 性能规格: 10资产标准版 1 包周期 否 ¥700.00 弹性负载均衡 实例类型: 共享型负载均衡(性能保障模式) IP费用: 1个 | 全动态BGP 带宽: 全动态BGP | 带宽 | 1Mbit/s 1 包周期 否 ¥173.00 弹性公网IP 带宽费用: 独享 | 全动态BGP | 按带宽计费 | 1Mbit/s 弹性公网IP费用: 1个 1 包周期 是 ¥23.00 Anti-DDoS流量清洗 m7.large.8 2vCPU 16G 1 包周期 否 ¥0.00 Web应用防火墙 规格选择: 入门版 1 包周期 是 ¥99.00 云数据库 RDS(for MySQL) 规格: 通用可用区 | MySQL | 5.7 | 主备 | 通用型 | 2核4GB 存储空间: SSD云盘 | 40GB 1 包周期 是 ¥470.00 分布式缓存服务Redis 产品类型: 基础版 | 6.0 | 主备 | X86 | D RAM | 2 | 4 GB 1 包周期 是 ¥277.60 云容器引擎 产品分类: CCE容器集群 | Standard/Turbo | 50节点 | 是 1 包周期 是 ¥1262.40 D2M制造应用服务器 规格: X86计算 | 内存优化型 | m3.large.8 | 2核 | 16GB 镜像: CentOS | CentOS 7.9 64bit 系统盘: 通用型SSD | 40GB 1 包周期 是 ¥344.20 D2M制造应用服务器 规格: X86计算 | 内存优化型 | m3.large.8 | 2核 | 16GB 镜像: CentOS | CentOS 7.9 64bit 系统盘: 通用型SSD | 40GB 1 包周期 是 ¥344.20 D2M制造应用服务器 规格: X86计算 | 内存优化型 | m3.large.8 | 2核 | 16GB 镜像: CentOS | CentOS 7.9 64bit 系统盘: 通用型SSD | 40GB 1 包周期 是 ¥344.20 企业主机安全 规格: 容器版 1 包周期 否 ¥300.00 企业主机安全 规格: 容器版 1 包周期 否 ¥300.00 企业主机安全 规格: 容器版 1 包周期 否 ¥300.00 弹性公网IP 带宽费用: 独享 | 全动态BGP | 按带宽计费 | 1Mbit/s 弹性公网IP费用: 1个 1 包周期 是 ¥23.00 NAT网关 规格: 小型 1 包周期 是 ¥306.00 内容分发网络CDN 使用区域: 中国大陆流量包 | 全时流量包 | 500GB | 1个月 1 包周期 是 ¥88.00 对象存储服务 产品类型: 对象存储 | 标准存储单AZ存储包 | 40GB 1 包周期 是 ¥1.00 消息&短信 规格: 500条 1 包周期 是 ¥32.50 云备份 存储库类型: 云服务器备份存储库 | 200GB 1 包周期 是 ¥40.00 IoTDA iotda 标准型|低频单元S1 1 包周期 否 ¥800.00
  • 操作场景 通常情况下,Hive以文本文件存储的表会以回车作为其行分隔符,即在查询过程中,以回车符作为一行表数据的结束符。但某些数据文件并不是以回车分隔的规则文本格式,而是以某些特殊符号分隔其规则文本。 MRS Hive支持指定不同的字符或字符组合作为Hive文本数据的行分隔符,即在创建表的时候,指定inputformat为SpecifiedDelimiterInputFormat,然后在每次查询前,都设置如下参数来指定分隔符,就可以以指定的分隔符查询表数据。 set hive.textinput.record.delimiter=''; 当前版本的Hue组件,不支持导入文件到Hive表时设置多个分隔符。 本章节适用于MRS 3.x及后续版本。
  • 工艺建模操作 登录D2M系统。 在导航栏中选择“基础→基础平台建模→工艺建模→工艺建模”,打开工艺建模作业项。 图1 工艺建模作业项 单击“打开”按钮,选择待创建工艺版本的产品。 图2 创建工艺版本 选择“工艺标准”,进入工艺建模界面。 单击“新增”按钮,创建生产该产品的工艺路线及工序属性。 图3 创建工艺路线 选择“人”页卡,填写各工序的人员资质要求及属性。 图4 填写“人”资质 选择“机”页卡,填写各工序的设备要求及换型时长、节拍时长等属性。 图5 填写“机”资质 选择“料”页卡,填写各工序的物料(BOM)要求及用量等属性。 图6 填写“料”要求 选择“法”页卡,填写各工序的生产中各(类)设备的工艺参数要求及控制频率。 图7 填写“法”要求 填写各工序的MRO(夹具、模具、刀具)要求及属性。 图8 填写“MRO”要求 单击“保存”按钮,审核无误后单击“发布”按钮。 图9 工艺标准保存发布
  • 工厂建模操作 登录D2M系统。 在导航栏中选择“基础→基础平台建模→工厂建模→工厂建模”,打开工厂建模作业项。 单击“新增公司”按钮,填写公司的相关信息。 图10 新增公司 选中公司节点,单击“新增工厂”按钮,填写工厂的相关信息。 图11 新增工厂 选中工厂节点,单击“新增区域”按钮,填写区域(车间)的相关信息。 图12 新增区域 选中区域节点,单击“新增生产单位”按钮,填写生产单位(产线)/仓库/实验室/检验工站的相关信息。 图13 新增生产单位 选中生产单位节点,单击“新增工位”按钮,填写工位/库位的相关信息 图14 新增工位
  • 操作步骤 创建表时指定inputFormat和outputFormat: CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name [(col_name data_type [COMMENT col_comment], ...)] [ROW FORMAT row_format] STORED AS inputformat 'org.apache.hadoop.hive.contrib.fileformat.SpecifiedDelimiterInputFormat' outputformat 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'; 查询之前指定配置项: set hive.textinput.record.delimiter='!@!'; Hive会以‘!@!’为行分隔符查询数据。
  • 生产作业操作 打开D2M执行终端。 图21 D2M执行终端首页 选择“任务”页签,进入任务管理页面。 单击“签到”按钮,扫描工牌或填写工号后单击确认,进行签到操作。 图22 D2M执行终端任务页签 图23 签到 单击相应生产任务的“开始”按钮,系统进行生产系统的标准验证,校验无误后单击“进入加工”完成任务开启操作。 图24 开启任务按钮 图25 生产系统校验 进入生产界面,单击“上料”按钮并扫描物料条码完成上料。 图26 生产界面上料 加工完成后,单击“打码”按钮并填写完工数量,单击“确认”按钮完成报工打码操作。 图27 生产界面报工打码
  • 配置描述 参考修改集群服务配置参数进入Yarn服务参数“全部配置”界面,在搜索框中输入参数名称。 ResourceManager Restart特性配置如下。 表1 ResourceManager Restart参数配置 参数 描述 默认值 yarn.resourcemanager.recovery.enabled 设置是否让ResourceManager在启动后恢复状态。如果设置为true,那yarn.resourcemanager.store.class也必须设置。 true yarn.resourcemanager.store.class 指定用于保存应用程序和任务状态以及证书内容的state-store类。 MRS 3.x之前的版本集群:org.apache.hadoop.yarn.server.resourcemanager.recovery.ZK RMS tateStore MRS 3.x及后续版本集群: org.apache.hadoop.yarn.server.resourcemanager.recovery.AsyncZKRMStateStore yarn.resourcemanager.zk-state-store.parent-path ZKRMStateStore在ZooKeeper上的保存目录。 /rmstore yarn.resourcemanager.work-preserving-recovery.enabled 启用ResourceManager Work preserving功能。该配置仅用于YARN特性验证。 true yarn.resourcemanager.state-store.async.load 对已完成的application采用ResourceManager异步恢复方式。 MRS 3.x之前的版本集群:false MRS 3.x及后续版本集群:true yarn.resourcemanager.zk-state-store.num-fetch-threads 启用异步恢复功能,增加工作线程的数量可以加快恢复ZK中保存的任务信息的速度,取值范围大于0。 MRS 3.x之前的版本集群:1 MRS 3.x及后续版本集群:20 NodeManager Restart特性配置如下。 表2 NodeManager Restart参数配置 参数 描述 默认值 yarn.nodemanager.recovery.enabled 当Nodemanager重启时是否启用日志失败收集功能,是否恢复未完成的Application。 true yarn.nodemanager.recovery.dir NodeManager用于保存container状态的本地目录。适用于MRS 3.x及后续版本集群。 ${SRV_HOME}/tmp/yarn-nm-recovery yarn.nodemanager.recovery.supervised NodeManager是否在监控下运行。开启此特性后NodeManager在退出后不会清理containers,NodeManager会假设自己会立即重启和恢复containers。 true
  • 配置场景 YARN Restart特性包含两部分内容:ResourceManager Restart和NodeManager Restart。 当启用ResourceManager Restart时,升主后的ResourceManager就可以通过加载之前的主ResourceManager的状态信息,并通过接收所有NodeManager上container的状态信息,重构运行状态继续执行。这样应用程序通过定期执行检查点操作保存当前状态信息,就可以避免工作内容的丢失。 当启用NodeManager Restart时,NodeManager在本地保存当前节点上运行的container信息,重启NodeManager服务后通过恢复此前保存的状态信息,就不会丢失在此节点上运行的container进度。
  • 操作场景 Slow Start特性指定Map任务完成度为多少时Reduce任务可以启动,过早启动Reduce任务会导致资源占用,影响任务运行效率,但适当的提早启动Reduce任务会提高Shuffle阶段的资源利用率,提高任务运行效率。例如:某集群可启动10个Map任务,MapReduce作业共15个Map任务,那么在一轮Map任务执行完成后只剩5个Map任务,集群还有剩余资源,在这种场景下,配置Slow Start参数值小于1,比如0.8,则Reduce就可以利用集群剩余资源。
  • 配置描述 参数入口: 参考修改集群服务配置参数进入Yarn服务参数“全部配置”界面,在搜索框中输入参数名称“mapreduce.job.am.memory.policy”。 配置说明: 配置项的默认值为空,此时不会启动自动调整的策略,ApplicationMaster的内存仍受“yarn.app.mapreduce.am.resource.mb”配置项的影响。 配置参数的值由5个数值组成,中间使用“:”与“,”分隔,格式为:baseTaskCount:taskStep:memoryStep,minMemory:maxMemory,在键入时会严格校验格式。 表1 配置数值说明 数值名称 描述 设定要求 baseTaskCount 任务总量基数,只有当应用的task总数(map端与reduce端之和)不小于该值时配置才会起作用。 不能为空且大于零。 taskStep 任务增量步进,与memoryStep共同决定内存调整量。 不能为空且大于零。 memoryStep 内存增量步进,在“yarn.app.mapreduce.am.resource.mb”配置的基础上对内存向上调整。 不能为空且大于零,单位:MB。 minMemory 内存自动调整下限,若调整后的内存不大于该值,仍保持“yarn.app.mapreduce.am.resource.mb”的配置。 不能为空且大于零,且不大于maxMemory的设定值。 单位:MB maxMemory 内存自动调整上限,若调整后的内存超过该值,则使用该值作为最终调整值。 不能为空且大于零,且不小于minMemory的设定值。 单位:MB
  • 操作场景 集群的资源竞争场景如下: 提交两个低优先级的应用Job 1和Job 2。 正在运行中的Job 1和Job 2有部分task处于running状态,但由于集群或队列资源容量有限,仍有部分task未得到资源而处于pending状态。 提交一个较高优先级的应用Job 3,此时会出现如下资源分配情况:当Job 1和Job 2中running状态的task运行结束并释放资源后,Job 3中处于pending状态的task将优先得到这部分新释放的资源。 Job 3完成后,资源释放给Job 1、Job 2继续执行。 用户可以在YARN中配置任务的优先级。任务优先级是通过ResourceManager的调度器实现的。
  • 配置描述 进入Mapreduce服务参数“全部配置”界面,在搜索框中输入参数名称。具体操作请参考修改集群服务配置参数章节。 表1 参数描述 参数 描述 默认值 mapreduce.cluster.acls.enabled 是否开启对Job History Server权限控制的开关。 true mapreduce.cluster.administrators 用于指定MapReduce集群管理员列表,可以配置用户和用户组,用户或者用户组之间用逗号间隔,用户和用户组之间用空格间隔,举例:userA,userB groupA,groupB。当配置为*时表示所有用户或用户组。 MRS 3.x之前版本:mapred MRS 3.x及之后版本: mapred supergroup,System_administrator_186
  • 操作步骤 参数入口: 进入Yarn服务参数“全部配置”界面,在搜索框中输入参数名称。具体操作请参考修改集群服务配置参数章节。 参数 描述 默认值 mapreduce.map.speculative 设置是否并行执行某些映射任务的多个实例。true表示开启。 false mapreduce.reduce.speculative 设置是否并行执行某些reduce任务的多个实例。true表示开启。 false
  • 操作步骤 原则一:充分利用集群资源。 Job运行时,会让所有的节点都有任务处理,且处于繁忙状态,这样才能保证资源充分利用,任务的并发度达到最大。可以通过调整处理的数据量大小,以及调整map和reduce个数来实现。 reduce个数的控制使用“mapreduce.job.reduces”。 map个数取决于使用了哪种InputFormat,以及待处理的数据文件是否可分割。默认的TextFileInputFormat将根据block的个数来分配map数(一个block一个map)。通过如下配置参数进行调整。 参数入口: 进入Yarn服务参数“全部配置”界面,在搜索框中输入参数名称。具体操作请参考修改集群服务配置参数章节。 表1 参数配置-1 参数 描述 默认值 mapreduce.input.fileinputformat.split.maxsize map输入信息应被拆分成的数据块的最大大小。 由用户定义的分片大小的设置及每个文件block大小的设置,可以计算分片的大小。计算公式如下: splitSize = Math.max(minSize, Math.min(maxSize, blockSize)) 如果maxSize设置大于blockSize,那么每个block就是一个分片,否则就会将一个block文件分隔为多个分片,如果block中剩下的一小段数据量小于splitSize,还是认为它是独立的分片。 - mapreduce.input.fileinputformat.split.minsize 可以设置数据分片的数据最小值。 0 原则二:控制reduce阶段在一轮中完成。 避免以下两种场景: 大部分的reduce在第一轮运行完后,剩下唯一一个reduce继续运行。这种情况下,这个reduce的执行时间将极大影响这个job的运行时间。因此需要将reduce个数减少。 所有的map运行完后,只有个别节点有reduce在运行。这时候集群资源没有得到充分利用,需要增加reduce的个数以便每个节点都有任务处理。 原则三:每个task的执行时间要合理。 如果一个job,每个map或reduce的执行时间只有几秒钟,就意味着这个job的大部分时间都消耗在task的调度和进程启停阶段,因此需要增加每个task处理的数据大小。建议一个task处理时间为1分钟。 控制单个task处理时间的大小,可以通过如下配置来调整。 参数入口: 进入Yarn服务参数“全部配置”界面,在搜索框中输入参数名称。具体操作请参考修改集群服务配置参数章节。 表2 参数配置-2 参数 描述 默认值 mapreduce.input.fileinputformat.split.maxsize map输入信息应被拆分成的数据块的最大大小。 由用户定义的分片大小的设置及每个文件block大小的设置,可以计算分片的大小。计算公式如下: splitSize = Math.max(minSize, Math.min(maxSize, blockSize)) 如果maxSize设置大于blockSize,那么每个block就是一个分片,否则就会将一个block文件分隔为多个分片,如果block中剩下的一小段数据量小于splitSize,还是认为它是独立的分片。 - mapreduce.input.fileinputformat.split.minsize 可以设置数据分片的数据最小值。 0
  • 配置描述 在客户端的“mapred-site.xml”配置文件中进行如下配置。“mapred-site.xml”配置文件在客户端安装路径的config目录下,例如“/opt/client/Yarn/config”。 表1 参数说明 参数 描述 默认值 mapreduce.app-submission.cross-platform 支持在Windows上提交到Linux上运行MR任务的配置项。当该参数的值设为“true”时,表示支持。当该参数的值设为“false”时,表示不支持。 true
  • 配置描述 参数入口: 请参考修改集群服务配置参数,进入HDFS的“全部配置”页面,在搜索框中输入参数名称。 表1 参数说明 参数 描述 默认值 fs.trash.interval 以分钟为单位的垃圾回收时间,垃圾站中数据超过此时间,会被删除。取值范围:1440~259200。 1440 fs.trash.checkpoint.interval 垃圾检查点间的间隔。单位:分钟。应小于等于“fs.trash.interval”的值。检查点程序每次运行时都会创建一个新的检查点并会移除fs.trash.interval分钟前创建的检查点。例如,系统每10分钟检测是否存在老化文件,如果发现有老化文件,则删除。对于未老化文件,则会存储在checkpoint列表中,等待下一次检查。 如果此参数的值设置为0,则表示系统不会检查老化文件,所有老化文件会被保存在系统中。 取值范围:0~fs.trash.interval。 说明: 不推荐将此参数值设置为0,这样系统的老化文件会一直存储下去,导致集群的磁盘空间不足。 60
  • 配置HDFS文件和目录的权限 HDFS支持用户进行文件和目录默认权限的修改。HDFS默认用户创建文件和目录的权限的掩码为“022”,如果默认权限满足不了用户的需求,可以通过配置项进行默认权限的修改。 参数入口: 请参考修改集群服务配置参数,进入HDFS的“全部配置”页面,在搜索框中输入参数名称。 表1 参数说明 参数 描述 默认值 fs.permissions.umask-mode 当客户端在HDFS上创建文件和目录时使用此umask值(用户掩码)。类似于linux上的文件权限掩码。 可以使用八进制数字也可以使用符号,例如:“022” (八进制,等同于以符号表示的u=rwx,g=r-x,o=r-x),或者“u=rwx,g=rwx,o=”(符号法,等同于八进制的“007”)。 说明: 8进制的掩码,和实际权限设置值正好相反,建议使用符号表示法,描述更清晰。 022
  • 日志级别 DBService中提供了如表2所示的日志级别。日志级别优先级从高到低分别是ERROR、WARN、INFO、DEBUG。程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。 表2 日志级别 级别 描述 ERROR ERROR表示当前时间处理存在错误信息。 WARN WARN表示当前事件处理存在异常信息。 INFO INFO表示记录系统及各事件正常运行状态信息。 DEBUG DEBUG表示记录系统及系统的调试信息。
  • 用Alluxio加速数据访问 由于Alluxio利用内存存储数据,它可以加速数据的访问。例如: 上传一个文件test_data.csv(文件是一份记录了食谱的样本)到obs-mrstest文件系统的/data目录下。通过ls命令显示文件状态: alluxio fs ls /mnt/obs/test_data.csv 294520189 PERSISTED 11-28-2019 19:38:55:000 0% /mnt/obs/test_data.csv 输出显示了该文件在Alluxio中缓存占比为0%,即不在Alluxio内存中。 统计该文件中单词"milk"出现的次数,并计算耗时。 time alluxio fs cat /mnt/obs/test_data.csv | grep -c milk 52180real 0m10.765suser 0m5.540ssys 0m0.696s 第一次读取数据后会将数据放在内存中,Alluxio再次读取时可以提高访问该数据的速度。例如:在通过cat命令获取文件后,用ls命令再查看文件的状态。 alluxio fs ls /mnt/obs/test_data.csv 294520189 PERSISTED 11-28-2019 19:38:55:000 100% /mnt/obs/test_data.csv 输出显示文件已经100%被加载到Alluxio中。 再次访问该文件,统计单词“eggs”出现的次数,并计算耗时。 time alluxio fs cat /mnt/obs/test_data.csv | grep -c eggs 59510real 0m5.777suser 0m5.992ssys 0m0.592s 对比两次耗时可以看出存储在Alluxio内存中的数据,数据访问耗时明显缩短。
  • Alluxio中的挂载功能 Alluxio通过统一命名空间的特性统一了对存储系统的访问。详情请参考:https://docs.alluxio.io/os/user/2.0/cn/advanced/Namespace-Management.html 这个特性允许用户挂载不同的存储系统到Alluxio命名空间中并且通过Alluxio命名空间无缝地跨存储系统访问文件。 在Alluxio中创建一个目录作为挂载点。 alluxio fs mkdir /mnt Successfully created directory /mnt 挂载一个已有的OBS文件系统到Alluxio(前提:给集群配置有OBS OperateAccess权限的委托,具体请参见配置存算分离集群(委托方式))。此处以obs-mrstest文件系统为例,请根据实际情况替换文件系统名。 alluxio fs mount /mnt/obs obs://obs-mrstest/data Mounted obs://obs-mrstest/data at /mnt/obs 通过Alluxio命名空间列出OBS文件系统中的文件。使用ls命令列出OBS挂载目录下的文件。 alluxio fs ls /mnt/obs 38 PERSISTED 11-28-2019 17:42:54:554 0% /mnt/obs/hive_load.txt12 PERSISTED 11-28-2019 17:43:07:743 0% /mnt/obs/test_input.txt 新挂载的文件和目录也可以通过Alluxio WebUI查看。 挂载完成后,通过Alluxio统一命名空间,可以无缝地从不同存储系统中交互数据。例如,使用ls -R命令,递归地列举出一个目录下的所有文件。 alluxio fs ls -R / 0 PERSISTED 11-28-2019 11:15:19:719 DIR /app-logs 1 PERSISTED 11-28-2019 11:18:36:885 DIR /apps 1 PERSISTED 11-28-2019 11:18:40:209 DIR /apps/templeton239440292 PERSISTED 11-28-2019 11:18:40:209 0% /apps/templeton/hive.tar.gz..... 1 PERSISTED 11-28-2019 19:00:23:879 DIR /mnt 2 PERSISTED 11-28-2019 19:00:23:879 DIR /mnt/obs 38 PERSISTED 11-28-2019 17:42:54:554 0% /mnt/obs/hive_load.txt 12 PERSISTED 11-28-2019 17:43:07:743 0% /mnt/obs/test_input.txt..... 输出显示了Alluxio文件系统根目录(默认值是HDFS的根目录,即hdfs://hacluster/)中来源于挂载存储系统的所有文件。/app-logs和/apps目录在HDFS文件系统中,/mnt/obs/目录在OBS中。
  • 使用Alluxio Shell Alluxio shell包含多种与Alluxio交互的命令行操作。 要查看文件系统操作命令列表。 alluxio fs 使用ls命令列出Alluxio里的文件。例如列出根目录下所有文件。 alluxio fs ls / 使用copyFromLocal命令可以复制本地文件到Alluxio中。 alluxio fs copyFromLocal /home/test_input.txt /test_input.txt 命令执行后回显: Copied file:///home/test_input.txt to /test_input.txt 再次使用ls命令列出Alluxio中的文件,可以看到刚刚拷贝的test_input.txt文件。 alluxio fs ls / 命令执行后回显: 12 PERSISTED 11-28-2019 17:10:17:449 100% /test_input.txt 输出显示test_input.txt文件在Alluxio中,各参数含义为文件的大小、是否被持久化、创建日期、Alluxio中这个文件的缓存占比、文件名。 使用cat命令打印文件的内容。 alluxio fs cat /test_input.txt 命令执行后回显: Test Alluxio
  • 背景信息 假定用户开发一个应用程序,用于管理企业中的使用A业务的用户信息,使用Impala客户端实现A业务操作流程如下: 普通表的操作: 创建用户信息表user_info。 在用户信息中新增用户的学历、职称信息。 根据用户编号查询用户姓名和地址。 A业务结束后,删除用户信息表。 表1 用户信息 编号 姓名 性别 年龄 地址 12005000201 A 男 19 A城市 12005000202 B 女 23 B城市 12005000203 C 男 26 C城市 12005000204 D 男 18 D城市 12005000205 E 女 21 E城市 12005000206 F 男 32 F城市 12005000207 G 女 29 G城市 12005000208 H 女 30 H城市 12005000209 I 男 26 I城市 12005000210 J 女 25 J城市
共100000条
提示

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