华为云用户手册

  • cci_admin_trust委托说明 cci_admin_trust委托具有Tenant Administrator权限。Tenant Administrator拥有除IAM管理外的全部云服务管理员权限,用于对CCI所依赖的其他云服务资源进行调用,且该授权仅在当前区域生效。 由于CCI对其他云服务有许多依赖,如果没有Tenant Administrator权限,可能会因为某个服务权限不足而影响CCI功能的正常使用。因此在使用CCI服务期间,请不要自行删除或者修改cci_admin_trust委托。
  • 汇总表 表1 网站搭建汇总表 网站搭建方案 搭建方式 操作系统 镜像及所含资源 说明 镜像部署Windows 环境 镜像部署 Windows 由所选镜像决定 已经购买了弹性云服务器,但想切换成其它类型操作系统,或者想使用镜像重新部署已经预装了其它软件的环境。 镜像部署WordPress(Linux) 镜像部署 Linux Wordpress官方正式版 软件版本:Wordpress5.3.2 环境软件:Php7.3.14、MySQL5.6、Apache2.4.6、CentOS7.6 WordPress简称WP,最初是一款博客系统,后逐步演化成一款免费的CMS(内容管理系统/建站系统)。 镜像部署PHPWind 论坛系统 镜像部署 Linux PHPWind论坛社区系统(LAMP) 软件版本:PHPWind先进版9.0.2 环境软件:LAMP、php5.6.31、mysql5.6.3、apache2.4.8、9Panel PHPWind(简称:PW)是一个基于PHP和MySQL的开源社区程序,是国内较受欢迎的论坛之一。轻架构,高效易开发,使用户可快速搭建并轻松管理。 镜像部署LNMP 环境 镜像部署 Linux LNMP平台(CentOS7.4 Nginx PHP7.2) Nginx 1.12.2 MySQL 5.7.21 PHP 7.2.4、7.1.16、7.0.29、5.6.35、5.5.38、5.4.45、5.3.29 Redis 4.0.9 Memcached 1.5.7 Jemalloc 5.0.1 Pure-FTPd 1.0.47 phpMyAdmin 4.4.15.10 LNMP代表Linux系统下Nginx+MySQL+PHP这种网站服务器架构,Nginx是一个小巧而高效的Linux下的Web服务器软件。 镜像部署Magento 电子商务网站(Linux) 镜像部署 Linux Magento2.2.4英文社区版_简单数据版 Magento是一款开源电子商务系统,设计灵活,具有模块化架构体系和丰富的功能,可为大中型站点提供解决方案。 镜像部署Moodle 课程管理系统(Linux) 镜像部署 Linux Moodle LMS在线学习系统(LAMP) 软件版本:Moodle3.5.2 环境软件:php7.0、mysql5.6、apache 2.4、9panel Moodle是一个开源的课程管理系统,采用PHP+MySQL开发,可以帮助教育者建立有效的在线学习社区,以系统功能强大、界面简洁而著称。 镜像部署OpenCart 电子商务网站(Linux) 镜像部署 Linux OpenCart电子商城(LAMP) 软件版本:OpenCart 3.0.2.0 环境软件:php7.0、mysql5.6.3、apache 2.4.8、9panel OpenCart(opencart.com)是世界著名的开源电子商务系统,系统开发语言为PHP。OpenCart功能全面,包含商品管理、订单管理、促销管理、内容管理、会员管理、支付、物流、报表等功能。开源生态系统完善,有大量的模板和插件可用。 镜像部署Java Web环境 镜像部署 Linux Java环境 Tomcat是一个免费的开放源代码的Web应用,是目前比较常用的Web 应用程序。可以用来托管常用的Java Web应用程序。 镜像部署Joomla内容管理系统(Linux) 镜像部署 Linux Joomla 网站内容管理系统( LAMP) 软件版本:Joomla 3.8.5 环境版本:LAMP、php7.0、mysql5.6.3、apache 2.4.8、9Panel Joomla是一套全球知名的内容管理系统,即Joomla CMS(Content Management System)。Joomla是使用PHP语言加上Mysql数据开发的软件系统,是网站的一个基础管理平台,适合从个人网站到各种企业网站、分类信息系统、电商销售类型的各类网站。 镜像部署AMH 镜像部署 Linux PHP运行环境AMH4.2面板PHP CentOS6.8 AMH是一套通过Web控制和管理服务器的Linux服务器管理系统以及虚拟主机管理系统。 搭建Discuz 论坛网站 手动部署 自动部署 Linux 公共镜像 Discuz是通用的社区论坛软件系统,基础架构采用流行的web编程组合PHP+MySQL实现。 搭建FTP 站点(Windows) 手动部署 Windows 公共镜像 使用Windows自带的FTP服务搭建FTP站点。 快速构建FTP站点(Linux) 手动部署 自动部署 Linux 公共镜像 使用vsftpd软件搭建FTP站点。vsftpd全称是“very secure FTP daemon”,是一款在Linux发行版中使用较多的FTP服务器软件。 基于Tomcat构建Java web环境 手动部署 自动部署 Linux 公共镜像 Tomcat 8.5.31 JDK 8u171 Tomcat是一个免费的开放源代码的Web应用,是目前比较常用的Web 应用程序。可以用来托管常用的Java Web应用程序。 手工搭建Magento 电子商务网站(Linux) 手动部署 自动部署 Linux 公共镜像 MySQL 5.7 PHP 7.0 Magento 2.1 Magento是一款开源电子商务系统,设计灵活,具有模块化架构体系和丰富的功能,可为大中型站点提供解决方案。 搭建Microsoft SharePoint Server 2016 手动部署 Windows 公共镜像 Microsoft SQL Server 2014 SharePoint Server 2016 Microsoft SharePoint Server是一个门户站点,使得企业能够开发出智能的门户站点。这个站点能够无缝连接到用户、团队和知识。 手工搭建LNMP环境 手动部署 Linux 公共镜像 Nginx 1.14.0 MySQL 5.7 PHP 7.0.31 LNMP代表Linux系统下Nginx+MySQL+PHP这种网站服务器架构,Nginx是一个小巧而高效的Linux下的Web服务器软件。 基于WordPress搭建个人网站(Linux) 手动部署 自动部署 Linux 公共镜像 Nginx 1.14.0 MySQL 5.7 PHP 7.0.31 WordPress 4.9.8 使用弹性云服务器的Linux实例手工搭建LNMP平台,并部署WordPress环境。WordPress简称WP,最初是一款博客系统,后逐步演化成一款免费的CMS(内容管理系统/建站系统)。 手工部署Docker(CentOS 7.5) 手动部署 自动部署 Linux 公共镜像 使用弹性云服务器的Linux实例部署Docker,并提供了Docker常用操作及简单的镜像制作过程。 搭建微信公众号后台——收发文本消息 手动部署 自动部署 Linux 公共镜像 使用弹性云服务器搭建微信公众号处理后台,使用Python语言编写对应的微信消息处理逻辑代码,接收从微信服务端转发过来的消息,并返回处理结果给最终用户。 手工部署GitLab(CentOS7.2) 手动部署 Linux 公共镜像 使用弹性云服务器的Linux实例手工部署GitLab。GitLab是一个开源的版本管理系统,使用Git作为代码管理工具。 手工部署RabbitMQ(CentOS 7.4) 手动部署 自动部署 Linux 公共镜像 Erlang 8.3 RabbitMQ 3.6.9 使用弹性云服务器的Linux实例部署RabbitMQ。RabbitMQ是采用Erlang语言实现AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件,它最初起源于金融系统,用于在分布式系统中存储转发消息。RabbitMQ凭借其高可靠、易扩展、高可用及丰富的功能特性成为目前非常热门的一款消息中间件。 手工搭建Ghost博客(Ubuntu 20.04) 手动部署 Linux 公共镜像 Nginx 1.14.0 MySQL 5.7 Ghost是基于Node.js的开源博客平台,可以为用户提供更加便捷的写作与发布平台,本文指导用户基于华为云弹性云服务器(以Ubuntu 20.04操作系统云服务器为例)部署Ghost博客。 手工部署Node.js(CentOS 7.2) 手动部署 Linux 公共镜像 使用弹性云服务器的Linux实例部署Node.js。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用于方便地搭建响应速度快、易于扩展的网络应用。Node.js使用事件驱动,非阻塞I/O模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。 PostgreSQL 本地Slave搭建步骤 手动部署 Linux PostgreSQL (11.2) PostgreSQL是一个开源对象关系型数据库管理系统,并侧重于可扩展性和标准的符合性。本文指导您使用华为云弹性云服务器搭建PostgreSQL。 手工安装宝塔面板(CentOS7.2) 手动部署 Linux 宝塔Linux面板6.9 宝塔面板是一款使用方便、功能强大且终身免费的服务器管理软件,支持Linux与Windows系统。一键配置LAMP、LNMP、网站、数据库、FTP、SSL,通过Web端轻松管理服务器。 基于开源wangmarketCMS快速建站 自动部署 Linux 公共镜像 该方案可帮助您在华为云弹性云服务器上快速搭建SaaS云建站系统,您可以通过私有化部署wangmarketCMS建站系统,创建上千个无技术门槛,100%自由度的网站,并根据开源代码进行定制化开发。 基于迅响快速构建响应式网站 自动部署 Linux 公共镜像 该解决方案可以帮助您在华为云弹性云服务器上基于迅响一键式构建响应式网站。 基于万户快速建站 自动部署 万户全网站管理系统 万户站群内容管理系统 该解决方案能帮助用户快速部署万户ezEIP企业网站管理系统。
  • 简介 为了方便用户搭建网站,本文汇总了华为云常用的网站搭建指导。并提供了指导文档和相关镜像的链接,您可以根据介绍选择需要搭建的网站,并通过链接获取指导文档和镜像,轻松搭建您的网站。 搭建方式分为镜像部署和手工搭建。 镜像部署使用市场镜像进行搭建,部署时间短,部署过程简单,可支持主流应用场景,且有镜像服务商的专业售后工程师团队支持。 手工搭建部署时间长,部署过程复杂,需要自行选择合适的操作系统、数据库、中间件等各类软件,再进行安装和配置。可以满足个性化的部署需求。后期的维护需要依赖自身运维人员的经验。
  • 背景 弹性云服务器的磁盘增强型、超高I/O型以及鲲鹏超高I/O型实例自带高存储带宽和IOPS的本地盘,适用于处理海量数据、需要高I/O能力,要求快速数据交换和处理的场景。 本地盘部署在弹性云服务器实例所在宿主机上,提供本地存储访问能力,具有高存储IOPS、低时延、高吞吐量和高性价比等优势。同时,由于本地盘只挂载于单台宿主机,因此其数据可靠性依赖宿主机的可靠性。如果出现宿主机异常、本地盘故障或实例重部署等情况,则本地盘数据会丢失。因此,请勿在本地盘上存储需要长期保存的业务数据。对于数据可靠性要求比较高的场景,建议您选择支持三副本技术的云硬盘。
  • 示例 示例一: 该示例将car_info数据,以buyday字段为分区字段,parquet为编码格式,转储数据到OBS。 1 2 3 4 5 6 7 8 9 10 11 12 13 create sink stream car_infos ( carId string, carOwner string, average_speed double, buyday string ) partitioned by (buyday) with ( type = "filesystem", file.path = "obs://obs-sink/car_infos", encode = "parquet", ak = "{{myAk}}", sk = "{{mySk}}" ); 数据最终在OBS中的存储目录结构为:obs://obs-sink/car_infos/buyday=xx/part-x-x。 数据生成后,可通过如下SQL语句建立OBS分区表,用于后续批处理: 创建OBS分区表。 1 2 3 4 5 6 7 8 create table car_infos ( carId string, carOwner string, average_speed double ) partitioned by (buyday string) stored as parquet location 'obs://obs-sink/car_infos'; 从关联OBS路径中恢复分区信息。 1 alter table car_infos recover partitions; 示例二 该示例将car_info数据,以buyday字段为分区字段,csv为编码格式,转储数据到HDFS。 1 2 3 4 5 6 7 8 9 10 11 12 create sink stream car_infos ( carId string, carOwner string, average_speed double, buyday string ) partitioned by (buyday) with ( type = "filesystem", file.path = "hdfs://node-master1sYAx:9820/user/car_infos", encode = "csv", field_delimiter = "," ); 数据最终在HDFS中的存储目录结构为:/user/car_infos/buyday=xx/part-x-x。
  • 关键字 表1 关键字说明 参数 是否必选 说明 type 是 输出流类型。“type”为“filesystem”,表示输出数据到文件系统。 file.path 是 输出目录,格式为: schema://file.path。 当前schame只支持obs和hdfs。 当schema为obs时,表示输出到对象存储服务OBS。 当schema为hdfs时,表示输出到HDFS。HDFS需要配置代理用户,具体请参考HDFS代理用户配置。 示例:hdfs://node-master1sYAx:9820/user/car_infos,其中node-master1sYAx:9820为MRS集群NameNode所在节点信息。 encode 是 输出数据编码格式,当前支持“parquet”格式和“csv”格式。 当schema为obs时,输出数据编码格式仅支持“parquet”格式。 当schema为hdfs时,输出数据编码格式支持“parquet”格式和“csv”格式。 ak 否 输出到OBS时该参数必填。用于访问OBS认证的accessKey,可使用全局变量,屏蔽敏感信息。 关于全局变量在控制台上的使用方法,请参考《数据湖探索用户指南》。 sk 否 输出到OBS时该参数必填。用于访问OBS认证的secretKey,可使用全局变量,屏蔽敏感信息。 关于全局变量在控制台上的使用方法,请参考《数据湖探索用户指南》。 krb_auth 否 创建跨源认证的认证名。开启kerberos认证时,需配置该参数。如果创建的MRS集群未开启kerb认证的集群,请确保在DLI队列host文件中添加MRS集群master节点的“/etc/hosts”信息。 field_delimiter 否 属性分隔符。 当编码格式为“csv”时,需要设置属性分隔符,用户可以自定义,如:“,”。
  • 注意事项 使用文件系统输出流的Flink作业必须开启checkpoint,保证作业的一致性。 为了避免数据丢失或者数据被覆盖,开启作业异常自动重启或者手动重启,需要配置为“从checkpoint恢复”。 checkpoint间隔设置需在输出文件实时性、文件大小和恢复时长之间进行权衡,比如10分钟。 checkpoint支持如下两种模式: AtLeastOnce:事件至少被处理一次。 ExactlyOnce:事件仅被处理一次。 使用文件系统输出流写入数据到OBS时,应避免多个作业写同一个目录的情况。 OBS对象存储桶的默认行为为覆盖写,可能导致数据丢失。 OBS并行文件系统桶的默认行为追加写,可能导致数据混淆。 因为以上OBS桶类型行为的区别,为避免作业异常重启可能导致的数据异常问题,请根据您的业务需求选择OBS桶类型。
  • HDFS代理用户配置 登录MRS管理页面。 选择MRS的HDFS Namenode配置,在“自定义”中添加配置参数。 图1 HDFS服务配置 其中,core-site值名称“hadoop.proxyuser.myname.hosts”和“hadoop.proxyuser.myname.groups”中的“myname”为传入的krb认证用户名称。 需要保证写入HDFS数据路径权限为777。 配置完成后,单击“保存配置”进行保存。
  • 功能描述 创建sink流将数据输出到分布式文件系统(HDFS)或者对象存储服务(OBS)等文件系统。数据生成后,可直接对生成的目录创建非DLI表,通过DLI SQL进行下一步处理分析,并且输出数据目录支持分区表结构。适用于数据转储、大数据分析、备份或活跃归档、深度或冷归档等场景。 对象存储服务(Object Storage Service,简称OBS)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力。 OBS的更多信息,请参见《对象存储服务控制台指南》。
  • 语法格式 1 2 3 4 5 6 7 8 9 CREATE SINK STREAM stream_id (attr_name attr_type (',' attr_name attr_type)* ) [PARTITIONED BY (attr_name (',' attr_name)*] WITH ( type = "filesystem", file.path = "obs://bucket/xx", encode = "parquet", ak = "", sk = "" );
  • 示例代码 为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表logs,并添加数据,命令示例如下: CREATE TABLE logs ( cookieid string, createtime string, pv INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile; 添加数据如下: cookie1 2015-04-10 1 cookie1 2015-04-11 5 cookie1 2015-04-12 7 cookie1 2015-04-13 3 cookie1 2015-04-14 2 cookie1 2015-04-15 4 cookie1 2015-04-16 4 cookie2 2015-04-10 2 cookie2 2015-04-11 3 cookie2 2015-04-12 5 cookie2 2015-04-13 6 cookie2 2015-04-14 3 cookie2 2015-04-15 9 cookie2 2015-04-16 7 示例:将所有记录根据cookieid分组,并按pv降序排列,返回组内每行的序号。命令示例如下: select cookieid, createtime, pv, row_number() over (partition by cookieid order by pv desc) as index from logs; -- 返回结果: cookie1 2015-04-12 7 1 cookie1 2015-04-11 5 2 cookie1 2015-04-16 4 3 cookie1 2015-04-15 4 4 cookie1 2015-04-13 3 5 cookie1 2015-04-14 2 6 cookie1 2015-04-10 1 7 cookie2 2015-04-15 9 1 cookie2 2015-04-16 7 2 cookie2 2015-04-13 6 3 cookie2 2015-04-12 5 4 cookie2 2015-04-11 3 5 cookie2 2015-04-14 3 6 cookie2 2015-04-10 2 7
  • 功能描述 在DLI数据多版本功能开启后,过期的备份数据后续在执行insert overwrite或者truncate语句时会被系统直接清理。OBS并行文件系统可以通过配置回收站加速删除操作过期的备份数据。通过在表属性添加配置“dli.multi.version.trash.dir”即可开启回收站功能。开启和关闭多版本语法请参考开启或关闭数据多版本。 DLI数据多版本功能当前仅支持通过Hive语法创建的OBS表,具体建表SQL语法可以参考使用Hive语法创建OBS表。
  • 参数说明 表1 参数说明 参数 描述 db_name 数据库名称,由字母、数字和下划线(_)组成。不能是纯数字,且不能以数字和下划线开头。 table_name 表名称。 obs桶多版本回收站目录 当前OBS表所在桶下的一个目录,您可以根据需要调整目录路径。比如当前OBS表所在路径为“obs://bucketName/filePath”,OBS表目录下已创建Trash目录,则该回收站目录可以指定为“obs://bucketName/filePath/Trash”。
  • 说明 语法 描述 where_condition where逻辑判断条件。 and 逻辑运算符:与。 or 逻辑运算符:或。 not 逻辑运算符:非。 ( 子逻辑判断条件开始。 ) 子逻辑判断条件结束。 condition 逻辑判断条件。 exists 关键字,用于判断是否存在一个不为空的集合,若exists后面跟的为子查询,子查询中须包含逻辑判断条件。 in 关键字,用于判断属性是否在一个集合中。 attrs_value_set_expr 属性值集合。 attr_expr 属性表达式。
  • 注意事项 暂不支持通过python写UDF、UDTF、UDAF自定义函数。 如果使用IntelliJ IDEA工具对创建的自定义函数进行调试,则需要在IDEA上勾选:include dependencies with "Provided" scope,否则本地调试运行时会加载不到pom文件中的依赖包。 具体操作以IntelliJ IDEA版本2020.2为例,参考如下: 在IntelliJ IDEA界面,选择调试的配置文件,单击“Edit Configurations”。 在“Run/Debug Configurations”界面,勾选:include dependencies with "Provided" scope。 单击“OK”完成应用配置。
  • 参数说明 表1 参数说明 参数 是否必选 默认值 数据类型 说明 connector 是 无 String connector类型,需配置为'redis'。 host 是 无 String redis连接地址。 port 否 6379 Integer redis连接端口。 password 否 无 String redis认证密码。 namespace 否 无 String redis key的namespace。 例如设置该值为"person",假设key为"jack"则redis中会是"person:jack"。 delimiter 否 : String redis的key和namespace之间的分隔符。 data-type 否 hash String redis的数据类型,有下列选项,与redis的数据类型相对应: hash list set sorted-set string data-type取值约束详见data-type取值约束说明。 schema-syntax 否 fields String redis的schema语义,包含以下值: fields:适用于所有数据类型。fields类型是指可以设置多个字段,写入时会取每个字段的值。 fields-scores:适用于sorted set数据类型,表示对每个字段都设置一个字段作为其独立的score。 array:适用于list、set、sorted set数据类型 array-scores:适用于sorted set数据类型 map:适用于hash、sorted set数据类型。 schema-syntax取值约束详见schema-syntax取值约束说明。 deploy-mode 否 standalone String redis集群的部署模式,支持standalone、master-replica、cluster,默认standalone。 该值可参考redis集群的实例类型介绍。 retry-count 否 5 Integer 连接redis集群的尝试次数。 connection-timeout-millis 否 10000 Integer 尝试连接redis集群时的最大超时时间。 commands-timeout-millis 否 2000 Integer 等待操作完成响应的最大时间。 rebalancing-timeout-millis 否 15000 Integer redis集群失败时的休眠时间。 default-score 否 0 Double 当data-type设置为“sorted-set”数据类型的默认score。 ignore-retraction 否 false Boolean 是否忽略retract消息。 skip-null-values 否 true Boolean 是否跳过null。若为false,则设置为字符串"null"。 pwd_auth_name 否 无 String DLI侧创建的Password类型的跨源认证名称。 使用跨源认证则无需在作业中配置账号和密码。 key-ttl-mode 否 no-ttl String key-ttl-mode是开启Redis sink TTL的功能参数,key-ttl-mode的限制为:no-ttl、expire-msec、expire-at-date、expire-at-timestamp。 no-ttl:不设置过期时间。 expire-msec:设置key多久过期,参数为long类型字符串,单位为毫秒。 expire-at-date:设置key到某个时间点过期,参数为UTC时间。 expire-at-timestamp:设置key到某个时间点过期,参数为时间戳。 key-ttl 否 无 String key-ttl是key-ttl-mode的补充参数,有以下几种参数值: 当key-ttl-mode取值为no-ttl时,不需要配置此参数。 当key-ttl-mode取值为expire-msec时,需要配置为可以解析成Long型的字符串。例如5000,表示5000ms后key过期。 当key-ttl-mode取值为expire-at-date时,需要配置为Date类型字符串,例如2011-12-03T10:15:30,表示到期时间为北京时间2011-12-03 18:15:30。 当key-ttl-mode取值为expire-at-timestamp时,需要配置为timestamp类型字符串,单位为毫秒。例如1679385600000,表示到期时间为2023-03-21 16:00:00。
  • 说明 语法 描述 join_condition join逻辑判断条件。 and 逻辑运算符:与。 or 逻辑运算符:或。 not 逻辑运算符:非。 ( 子逻辑判断条件开始。 ) 子逻辑判断条件结束。 condition 逻辑判断条件。 const_set 常量集合,元素间逗号分隔。 in 关键字,用于判断属性是否在一个集合中。 atrrs_value_set_expr 属性值集合。 attr_expr 属性表达式。 Equality and inequality 等式与不等式,详情请参见关系运算符。 pattern_string 模式匹配字符串,支持通配符匹配。WHERE LIKE条件过滤时,支持SQL通配符中“%”与“_”,“%”代表一个或多个字符,“_”仅代表一个字符。
  • 参数说明 表1 参数说明 参数 是否必选 说明 expr 是 待计算返回结果的表达式。 ignore_nulls 否 BOOLEAN类型,表示是否忽略NULL值。默认值为False。 当参数的值为True时,返回窗口中第一条非NULL的值。 partition_clause 否 指定分区。分区列的值相同的行被视为在同一个窗口内。 orderby_clause 否 指定数据在一个窗口内如何排序。 frame_clause 否 用于确定数据边界。
  • 示例代码 为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表logs,并添加数据,命令示例如下: create table logs( cookieid string, createtime string, url string ) STORED AS parquet; 添加数据如下: cookie1 2015-04-10 10:00:02 url2 cookie1 2015-04-10 10:00:00 url1 cookie1 2015-04-10 10:03:04 url3 cookie1 2015-04-10 10:50:05 url6 cookie1 2015-04-10 11:00:00 url7 cookie1 2015-04-10 10:10:00 url4 cookie1 2015-04-10 10:50:01 url5 cookie2 2015-04-10 10:00:02 url22 cookie2 2015-04-10 10:00:00 url11 cookie2 2015-04-10 10:03:04 url33 cookie2 2015-04-10 10:50:05 url66 cookie2 2015-04-10 11:00:00 url77 cookie2 2015-04-10 10:10:00 url44 cookie2 2015-04-10 10:50:01 url55 示例:将所有记录根据cookieid分组,并按createtime升序排列,返回每组中的最后一行数据。命令示例如下 SELECT cookieid, createtime, url, LAST_VALUE(url) OVER(PARTITION BY cookieid ORDER BY createtime) AS last FROM logs; -- 返回结果: cookieid createtime url last cookie1 2015-04-10 10:00:00 url1 url1 cookie1 2015-04-10 10:00:02 url2 url2 cookie1 2015-04-10 10:03:04 url3 url3 cookie1 2015-04-10 10:10:00 url4 url4 cookie1 2015-04-10 10:50:01 url5 url5 cookie1 2015-04-10 10:50:05 url6 url6 cookie1 2015-04-10 11:00:00 url7 url7 cookie2 2015-04-10 10:00:00 url11 url11 cookie2 2015-04-10 10:00:02 url22 url22 cookie2 2015-04-10 10:03:04 url33 url33 cookie2 2015-04-10 10:10:00 url44 url44 cookie2 2015-04-10 10:50:01 url55 url55 cookie2 2015-04-10 10:50:05 url66 url66 cookie2 2015-04-10 11:00:00 url77 url77 截止到当前行的最后一个值,其实就是它本身。
  • 示例1:创建OBS非分区表 示例说明:创建名为table1的OBS非分区表,使用USING关键字指定该表的存储格式为orc格式。 在您的实际使用中,可以将obs表存储为parquet、json、avro等类型。 1 2 3 4 5 CREATE TABLE IF NOT EXISTS table1 ( col_1 STRING, col_2 INT) USING orc OPTIONS (path 'obs://bucketName/filePath');
  • 示例5:创建OBS分区表,自定义表的OPTIONS参数 示例说明:创建OBS表时支持自定义属性名与属性值,OPTIONS参数说明可参考表2。 本例创建名为table3并以col_2为分区依据的OBS分区表。在OPTIONS中配置path、multiLevelDirEnable、dataDelegated和compression。 path:OBS存储路径,本例为“obs ://bucketName/filePath”,其中的bucketName为您存储时所使用桶名称,filePath为您实际使用的目录名称; 请注意大数据场景建议使用OBS并行文件系统进行存储; multiLevelDirEnable:本例设置为true,表示查询该表时会迭代读取表路径中的所有文件和子目录文件,若不需要此项配置可以设置为false或不设置(默认为false); dataDelegated:本例设置为true,表示在删除表或相关分区时,会一并清除改path路径下的所有数据,若不需要此项配置可以设置为false或不设置(默认为false); compression:当创建的OBS表需要压缩时,可以使用compression关键字来配置压缩格式,本例中就使用了zstd压缩格式。 1 2 3 4 5 6 7 8 9 10 11 12 CREATE TABLE IF NOT EXISTS table3 ( col_1 STRING, col_2 int ) USING parquet PARTITIONED BY (col_2) OPTIONS ( path 'obs://bucketName/filePath', multiLeveldirenable = true, datadelegated = true, compression = 'zstd' );
  • 示例2:创建OBS分区表 示例说明:创建一个名为student的分区表,该分区表使用院系编号(facultyNo)和班级编号(classNo)进行分区。该student表会同时按照不同的院系编号(facultyNo)和不同的班级编号(classNo)分区。 在实际的使用过程中,您可以选择合适的分区字段并将其添加到PARTITIONED BY关键字后的括号内。 1 2 3 4 5 6 7 CREATE TABLE IF NOT EXISTS student ( Name STRING, facultyNo INT, classNo INT) USING csv OPTIONS (path 'obs://bucketName/filePath') PARTITIONED BY (facultyNo, classNo);
  • 示例6:创建OBS非分区表,自定义表的OPTIONS参数 示例说明:CSV表是一种以逗号分隔的纯文本文件格式,用于存储和交换数据。它通常用于简单的数据交换,但是它没有结构化数据的概念,因此不适合存储复杂数据类型。于是当file_format为csv时,支持配置更多的OPTIONS参数(参考表3)。 本例创建一个名为table4且存储格式为csv非分区表并使用了额外的OPTIONS参数对数据加以约束。 delimiter:数据分隔符,表示使用逗号(,)作为数据之间的分隔符; quote:引用字符,表示使用双引号(”)来表示数据中的引用信息; escape:转义字符,表示使用反斜杠(\)作为数据存储时的转义字符; multiLine:设置需要存储的列数据中不包含回车符或者换行符; dataFormat:表示该csv文件中data字段的指定日期格式为yyyy-MM-dd; timestamoFormat:表示该csv文件中会将时间戳格式指定为yyyy-MM-dd HH:mm:ss; header:表示该csv表中包含表头信息; nullValue:表示设置null来表示csv表中的null值; comment:表示该csv表使用斜杠(/)表示注释的开头; compression:表示该csv表被压缩,此处csv表支持gzip、bzip2和deflate的压缩格式,若不需要压缩,也可以设置为none; encoding:表示该表使用utf-8的数据编码格式,在实际使用中,可以根据您的需求选择utf-8、gb2312和gbk中任一种编码格式,其中默认编码格式为utf-8。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CREATE TABLE IF NOT EXISTS table4 ( col_1 STRING, col_2 INT ) USING csv OPTIONS ( path 'obs://bucketName/filePath', delimiter = ',', quote = '#', escape = '|', multiline = false, dateFormat = 'yyyy-MM-dd', timestampFormat = 'yyyy-MM-dd HH:mm:ss', mode = 'failfast', header = true, nullValue = 'null', comment = '*', compression = 'deflate', encoding = 'utf - 8' );
  • 语法格式 1 2 3 4 5 6 7 CREATE TABLE [IF NOT EXISTS] [db_name.]table_name [(col_name1 col_type1 [COMMENT col_comment1], ...)] USING file_format [OPTIONS (path 'obs_path', key1=val1, key2=val2, ...)] [PARTITIONED BY (col_name1, col_name2, ...)] [COMMENT table_comment] [AS select_statement]
  • 参数说明 表1 参数说明 参数 是否必选 描述 db_name 否 Database名称。 由字母、数字和下划线(_)组成。不能是纯数字,且不能以数字和下划线开头。 table_name 是 Database中的待创建的表名。 由字母、数字和下划线(_)组成。不能是纯数字,且不能以数字和下划线开头。匹配规则为:^(?!_)(?![0-9]+$)[A-Za-z0-9_$]*$。 特殊字符需要使用单引号('')包围起来。 表名对大小写不敏感,即不区分大小写。 col_name 是 以逗号分隔的带数据类型的列名。 列名由字母、数字和下划线(_)组成。不能是纯数字,且至少包含一个字母。 列名为大小写不敏感,即不区分大小写。 col_type 是 列字段的数据类型。数据类型为原生类型。 请参考原生数据类型。 col_comment 否 列字段描述。仅支持字符串常量。 file_format 是 file_format是用于创建表的输入格式。支持orc,parquet,json,csv,avro类型。 path 是 数据文件所在的OBS存储路径,推荐使用OBS并行文件系统存储。 格式:obs://bucketName/tblPath bucketName即桶名称。 tblPath是目录名称。目录后不需要指定文件名。 更多建表时的属性名与属性值请参考表2。 file_format为csv时表的属性名与属性值请参考表2和表3。 当OBS的目录下文件夹与文件同名时,创建OBS表指向的路径会优先指向文件而非文件夹。 table_comment 否 表描述信息。仅支持字符串常量。 select_statement 否 用于CTAS命令,将源表的select查询结果或某条数据插入到新创建的OBS表中。 表2 OPTIONS参数描述 参数 是否必选 描述 path 否 指定的表路径,即OBS存储路径。 multiLevelDirEnable 否 嵌套子目录场景下,是否迭代查询子目录中的数据。当配置为true时,查询该表时会迭代读取该表路径中所有文件,包含子目录中的文件。 默认值:false dataDelegated 否 是否需要在删除表或分区时,清除path路径下的数据。 默认值:false compression 否 指定压缩格式。一般为parquet格式时指定该参数,推荐使用'zstd'压缩格式。 当file_format为csv时,支持设置以下OPTIONS参数。 表3 CSV数据格式OPTIONS参数说明 参数 是否必选 描述 delimiter 否 数据分隔符。 默认值:逗号(即",”) quote 否 引用字符。 默认值:双引号(即“"”) escape 否 转义字符。 默认值:反斜杠(即“\”) multiLine 否 列数据中是否包含回车符或转行符,true为包含,false为不包含。 默认值:false dateFormat 否 指定CSV文件中date字段的日期格式。 默认值:yyyy-MM-dd timestampFormat 否 指定CSV文件中timestamp字段的日期格式。 默认值: yyyy-MM-dd HH:mm:ss mode 否 指定解析CSV时的模式,有三种模式。默认值:PERMISSIVE PERMISSIVE:宽容模式,遇到错误的字段时,设置该字段为Null DROPMALFORMED: 遇到错误的字段时,丢弃整行。 FAILFAST:报错模式,遇到错误的字段时直接报错。 header 否 CSV是否包含表头信息,true表示包含表头信息,false为不包含。 默认值:false nullValue 否 设置代表null的字符,例如,nullValue="nl"表示设置nl代表null。 comment 否 设置代表注释开头的字符,例如,comment='#'表示以#开头的行为注释。 compression 否 设置数据的压缩格式。目前支持gzip、bzip2、deflate压缩格式,若不希望压缩,则输入none。 默认值:none encoding 否 数据的编码格式。支持utf-8,gb2312,gbk三种,如果不填写,则默认为utf-8。 默认值:utf-8
  • 注意事项 创建表时不会统计大小。 添加数据时会修改大小至0。 如需查看表大小可以通过OBS查看。 CTAS建表语句不能指定表的属性。 OBS目录下包含子目录的场景: 创建表时,若指定路径为OBS上的目录,且该目录下包含子目录(或嵌套子目录),则子目录下的所有文件类型及其内容也是表内容。 用户需要保证所指定的目录及其子目录下所有文件类型和建表语句中指定的存储格式一致,所有文件内容和表中的字段一致,否则查询将报错。 用户可以在建表语句OPTIONS中设置“multiLevelDirEnable”为true以查询子目录下的内容,此参数默认值为false(注意,此配置项为表属性,请谨慎配置。Hive表不支持此配置项)。 关于分区表的使用说明: 创建分区表时,PARTITIONED BY中指定分区列必须是表中的列,且必须在Column列表中指定类型。分区列只支持string, boolean, tinyint, smallint, short, int, bigint, long, decimal, float, double, date, timestamp类型。 创建分区表时,分区字段必须是表字段的最后一个字段或几个字段,且多分区字段的顺序也必须对应。否则将出错。 单表分区数最多允许7000个。 CTAS建表语句不支持创建分区表。
  • 说明 语法 描述 attr_expr 属性表达式。 attr 表的字段,与col_name相同。 const_value 常量值。 case_expr case表达式。 math_func 数学函数。 date_func 日期函数。 string_func 字符串函数。 aggregate_func 聚合函数。 window_func 分析窗口函数。 user_define_func 用户自定义函数。 general_binary_operator 普通二元操作符。 general_unary_operator 普通一元操作符。 ( 指定子属性表达式开始。 ) 指定子属性表达式结束。
  • 示例代码 为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表salary,并添加数据,命令示例如下: CREATE EXTERNAL TABLE salary ( dept STRING, -- 部⻔名称 userid string, -- 员⼯ID sal INT -- 薪⽔ ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile; 添加数据如下: d1,user1,1000 d1,user2,2000 d1,user3,3000 d2,user4,4000 d2,user5,5000 统计小于等于当前薪水的人数占比 select dept, userid, sal, cume_dist() over(order by sal) as cume1 from salary; -- 结果: d1 user1 1000 0.2 d1 user2 2000 0.4 d1 user3 3000 0.6 d2 user4 4000 0.8 d2 user5 5000 1.0 按部⻔分组统计⼩于等于当前薪⽔的⼈数的⽐例 select dept, userid, sal, cume_dist() over (partition by dept order by sal) as cume2 from salary; -- 结果: d1 user1 1000 0.3333333333333333 d1 user2 2000 0.6666666666666666 d1 user3 3000 1.0 d2 user4 4000 0.5 d2 user5 5000 1.0 按照sal降序排序后,结果就是统计 ⼤于等于 当前薪⽔的⼈数的⽐例 select dept, userid, sal, cume_dist() over(order by sal desc) as cume3 from salary; -- 结果: d2 user5 5000 0.2 d2 user4 4000 0.4 d1 user3 3000 0.6 d1 user2 2000 0.8 d1 user1 1000 1.0 select dept, userid, sal, cume_dist() over(partition by dept order by sal desc) as cume4 from salary; -- 结果: d1 user3 3000 0.3333333333333333 d1 user2 2000 0.6666666666666666 d1 user1 1000 1.0 d2 user5 5000 0.5 d2 user4 4000 1.0
  • 参数说明 表1 参数说明 参数 是否必选 说明 expr 是 待计算返回结果的表达式。 offset 否 偏移量,BIGINT类型常量,取值大于等于0。值为0时表示当前行,为1时表示前一行,以此类推。默认值为1。输入值为STRING类型、DOUBLE类型则隐式转换为BIGINT类型后进行运算。 default 是 常量,默认值为NULL。 当offset指定的范围越界时的缺省值,需要与expr对应的数据类型相同。如果expr非常量,则基于当前行进行求值。 partition_clause 否 指定分区。分区列的值相同的行被视为在同一个窗口内。 orderby_clause 否 指定数据在一个窗口内如何排序。
  • 示例代码 示例数据 为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表logs,并添加数据,命令示例如下: create table logs( cookieid string, createtime string, url string ) STORED AS parquet; 添加数据如下: cookie1 2015-04-10 10:00:02 url2 cookie1 2015-04-10 10:00:00 url1 cookie1 2015-04-10 10:03:04 url3 cookie1 2015-04-10 10:50:05 url6 cookie1 2015-04-10 11:00:00 url7 cookie1 2015-04-10 10:10:00 url4 cookie1 2015-04-10 10:50:01 url5 cookie2 2015-04-10 10:00:02 url22 cookie2 2015-04-10 10:00:00 url11 cookie2 2015-04-10 10:03:04 url33 cookie2 2015-04-10 10:50:05 url66 cookie2 2015-04-10 11:00:00 url77 cookie2 2015-04-10 10:10:00 url44 cookie2 2015-04-10 10:50:01 url55 将所有记录根据cookieid分组,并按createtime升序排列,返回窗口内往上第2行的值。命令示例如下 示例1: SELECT cookieid, createtime, url, LAG(createtime, 2) OVER (PARTITION BY cookieid ORDER BY createtime) AS last_2_time FROM logs; -- 返回结果: cookieid createtime url last_2_time cookie1 2015-04-10 10:00:00 url1 NULL cookie1 2015-04-10 10:00:02 url2 NULL cookie1 2015-04-10 10:03:04 url3 2015-04-10 10:00:00 cookie1 2015-04-10 10:10:00 url4 2015-04-10 10:00:02 cookie1 2015-04-10 10:50:01 url5 2015-04-10 10:03:04 cookie1 2015-04-10 10:50:05 url6 2015-04-10 10:10:00 cookie1 2015-04-10 11:00:00 url7 2015-04-10 10:50:01 cookie2 2015-04-10 10:00:00 url11 NULL cookie2 2015-04-10 10:00:02 url22 NULL cookie2 2015-04-10 10:03:04 url33 2015-04-10 10:00:00 cookie2 2015-04-10 10:10:00 url44 2015-04-10 10:00:02 cookie2 2015-04-10 10:50:01 url55 2015-04-10 10:03:04 cookie2 2015-04-10 10:50:05 url66 2015-04-10 10:10:00 cookie2 2015-04-10 11:00:00 url77 2015-04-10 10:50:01 说明:因为没有设置默认值,当没有上两行时显示为NULL。 示例2: SELECT cookieid, createtime, url, LAG(createtime,1,'1970-01-01 00:00:00') OVER (PARTITION BY cookieid ORDER BY createtime) AS last_1_time FROM cookie4; -- 结果: cookieid createtime url last_1_time cookie1 2015-04-10 10:00:00 url1 1970-01-01 00:00:00 (显示默认值) cookie1 2015-04-10 10:00:02 url2 2015-04-10 10:00:00 cookie1 2015-04-10 10:03:04 url3 2015-04-10 10:00:02 cookie1 2015-04-10 10:10:00 url4 2015-04-10 10:03:04 cookie1 2015-04-10 10:50:01 url5 2015-04-10 10:10:00 cookie1 2015-04-10 10:50:05 url6 2015-04-10 10:50:01 cookie1 2015-04-10 11:00:00 url7 2015-04-10 10:50:05 cookie2 2015-04-10 10:00:00 url11 1970-01-01 00:00:00 (显示默认值) cookie2 2015-04-10 10:00:02 url22 2015-04-10 10:00:00 cookie2 2015-04-10 10:03:04 url33 2015-04-10 10:00:02 cookie2 2015-04-10 10:10:00 url44 2015-04-10 10:03:04 cookie2 2015-04-10 10:50:01 url55 2015-04-10 10:10:00 cookie2 2015-04-10 10:50:05 url66 2015-04-10 10:50:01 cookie2 2015-04-10 11:00:00 url77 2015-04-10 10:50:05
共100000条