华为云用户手册

  • 接口约束 待删除的桶必须为空,桶为空包含两方面含义: 桶内没有任何对象,没有对象的任何历史版本,没有对象的删除标记(删除标记也视作一个历史版本)。 桶内没有任何未合并的多段上传任务,即桶内不存在碎片。 您必须是桶拥有者或拥有删除桶的权限,才能删除桶。建议使用 IAM 或桶策略进行授权,如果使用IAM则需授予obs:bucket:DeleteBucket权限,如果使用桶策略则需授予DeleteBucket权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。
  • 请求参数说明 表1 请求参数列表 参数名称 参数类型 是否必选 描述 bucketName str 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 extensionHeaders dict 可选 参数解释: 接口的拓展头域。 取值范围: 参考自定义头域。 默认取值: 无
  • 返回结果说明 表2 返回结果 类型 说明 GetResult 参数解释: SDK公共结果对象。 表3 GetResult 参数名称 参数类型 描述 status int 参数解释: HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 默认取值: 无 reason str 参数解释: HTTP文本描述。 默认取值: 无 errorCode str 参数解释: OBS服务端错误码,当status参数小于300时为空。 默认取值: 无 errorMessage str 参数解释: OBS服务端错误描述,当status参数小于300时为空。 默认取值: 无 requestId str 参数解释: OBS服务端返回的请求ID。 默认取值: 无 indicator str 参数解释: OBS服务端返回的错误定位码。 默认取值: 无 hostId str 参数解释: 请求的服务端ID,当status参数小于300时为空。 默认取值: 无 resource str 参数解释: 发生错误时相关的桶或对象,当status参数小于300时为空。 默认取值: 无 header list 参数解释: 响应消息头列表,由多个元组构成。每个元组均包含两个元素,代表响应头的键值对。 默认取值: 无 body object 参数解释: 操作成功后的结果数据,当status大于300时为空。该值根据调用接口的不同而不同,参见“桶相关接口”章节和“对象相关接口”章节的详细描述。 默认取值: 无
  • 返回结果 表2 返回结果 类型 说明 GetResult 参数解释: SDK公共结果对象。 表3 GetResult 参数名称 参数类型 描述 status int 参数解释: HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 默认取值: 无 reason str 参数解释: HTTP文本描述。 默认取值: 无 errorCode str 参数解释: OBS服务端错误码,当status参数小于300时为空。 默认取值: 无 errorMessage str 参数解释: OBS服务端错误描述,当status参数小于300时为空。 默认取值: 无 requestId str 参数解释: OBS服务端返回的请求ID。 默认取值: 无 indicator str 参数解释: OBS服务端返回的错误定位码。 默认取值: 无 hostId str 参数解释: 请求的服务端ID,当status参数小于300时为空。 默认取值: 无 resource str 参数解释: 发生错误时相关的桶或对象,当status参数小于300时为空。 默认取值: 无 header list 参数解释: 响应消息头列表,由多个元组构成。每个元组均包含两个元素,代表响应头的键值对。 默认取值: 无 body object 参数解释: 操作成功后的结果数据,当status大于300时为空。该值根据调用接口的不同而不同,参见“桶相关接口”章节和“对象相关接口”章节的详细描述。 默认取值: 无
  • 操作前准备 工具包 DLI 的JDBC驱动: 单击dli-jdbc-x.x.x.jar获取JDBC驱动,驱动名称:huaweicloud-dli-jdbc-xxx-dependencies.jar。 DBeaver客户端安装包: DBeaver官网提供了针对不同操作系统的客户端安装包,单击下载DBeaver访问DBeaver官网下载系统对应的DBeaver客户端安装包并完成安装 。推荐使用24.0.3版本的DBeaver。 连接信息: 表1 连接信息 类别 说明 获取方式 DLI AKSK AK/SK认证就是使用AK/SK对请求进行签名,从而通过身份认证。 获取AK/SK DLI Endpoint地址 地区与终端节点,即云服务在不同Region有不同的访问 域名 。 获取EndPoint DLI所在的项目ID 项目编号,用于资源隔离。 获取项目ID DLI区域信息 DLI所属区域信息 地区和终端节点
  • 步骤1:上传数据 将数据上传到 对象存储服务 OBS,为后面使用DLI完成数据分析做准备。 下载OBS Browser+。下载地址请参考《对象存储服务工具指南》。 安装OBS Browser+。安装步骤请参考《对象存储服务工具指南》。 登录OBS Browser+。OBS Browser+支持AK方式登录,以及授权码登录两种登录方式。登录步骤请参考《对象存储服务工具指南》。 通过OBS Browser+上传数据。 在OBS Browser+页面单击“创建桶”,按照要求选择“区域”和填写“桶名”(例如:dli-demo),其他参数保持默认或根据需要选择,创建桶成功后,返回桶列表,单击桶dli-demo。OBS Browser+提供强大的拖拽上传功能,您可以将本地的一个或多个文件或者文件夹拖拽到对象存储的对象列表或者并行文件系统的对象列表中;同时您也可以将文件或文件夹拖拽到指定的目录上,这样可以上传到指定的目录中。 单击Best_Practice_01.zip获取本示例的测试数据,将“Best_Practice_01.zip”压缩包解压。后续操作说明如下: 详单数据:将解压后Data目录下的“detail-records”文件夹上传到OBS桶根目录下。 订单数据:将解压后Data目录下的“order-records”文件夹上传到OBS桶根目录下。
  • 资源和成本规划 表1 资源和成本规划 资源 资源说明 成本说明 OBS 需要创建一个OBS桶将数据上传到对象存储服务OBS,为后面使用DLI完成数据分析做准备。 OBS的使用涉及以下几项费用: 存储费用:静态网站文件存储在OBS中产生的存储费用。 请求费用:用户访问OBS中存储的静态网站文件时产生的请求费用。 流量费用:用户使用自定义域名通过公网访问OBS时产生的流量费用。 实际产生的费用与存储的文件大小、用户访问所产生的请求次数和流量大小有关,请根据自己的业务进行预估。 DLI 在创建SQL作业前需购买队列,使用DLI的队列资源时,按照队列CU时进行计费。 如购买按需计费的队列,在使用队列资源时,按照队列CU时进行计费。 以小时为单位进行结算。不足一小时按一小时计费,小时数按整点计算。队列CU时按需计费的计算费用=单价*CU数*小时数。
  • 数据说明 详单数据 车辆上报的详单数据,包括定时上报的位置记录和异常的驾驶行为触发的告警事件数据。 表2 详单数据 字段名称 字段类型 字段说明 driverID string 驾驶员ID carNumber string 车牌号 latitude double 纬度 longitude double 经度 speed int 速度 direction int 方向 siteName string 地点 time timestamp 记录上报时间 isRapidlySpeedup int 急加速标识,“1”表示急加速,“0”表示非急加速 isRapidlySlowdown int 急减速 isNeutralSlide int 空挡滑行 isNeutralSlideFinished int 空挡滑行结束 neutralSlideTime bigint 空挡滑行时长 isOverspeed int 超速 isOverspeedFinished int 超速结束 overspeedTime bigint 超速时长 isFatigueDriving int 疲劳驾驶 isHthrottleStop int 停车轰油门 isOilLeak int 用油异常 订单数据 订单数据记录了货运订单相关的信息。 表3 订单数据 字段名称 字段类型 字段说明 orderNumber string 订单号 driverID string 驾驶员ID carNumber string 车牌号 customerID string 客户ID sourceCity string 出发城市 targetCity string 到达城市 expectArriveTime timestamp 期望送达时间 time timestamp 记录产生时间 action string 事件类型,包括创建订单、开始发货、货物送达、订单签收等事件
  • 步骤2:分析账户消费结构并优化 在DLI上进行消费明细分析。 将1下载的消费明细数据上传到已建好的OBS桶中。 在 数据湖探索 服务中创建表。 登录DLI控制台,左侧导航栏单击“SQL编辑器”,执行引擎选择“spark”,选择执行的队列和数据库。本次演示队列和数据库选择“default”。 下载的文件中包含时间用量等,按表头意义在DLI上创建表,具体可以参考如下示例,其中amount列为费用。 CREATE TABLE `spending` ( account_period string, EnterpriseProject string, EnterpriseProjectID string, accountID string, product_type_code string, product_type string, product_code string, product_name string, product_id string, mode string, time1 string, use_start string, use_end string, orderid string, ordertime string, resource_type string, resource_id string, resouce_name string, tag string, skuid string, `c22name` STRING, `c23name` STRING, `c24name` STRING, `c25name` STRING, `c26name` STRING, `c27name` STRING, `c28name` STRING, `c29name` STRING, size STRING, `c31name` STRING, `c32name` STRING, `c33name` STRING, `c34name` STRING, `c35name` STRING, `amount` STRING, `c37name` STRING, `c38name` STRING, `c39name` STRING, `c40name` STRING, `c41name` STRING, `c42name` STRING, `c43name` STRING, `c44name` STRING, `c45name` STRING, `c46name` STRING, `c47name` STRING, `c48name` STRING, `c49name` STRING, `c50name` STRING, `c51name` STRING, `c52name` STRING, `c53name` STRING, `c54name` STRING) USING csv options ( path 'obs://xxx/Spendings(ByTransaction)_20200501_20200531.csv', header true) 查询该时间内消费最高的resource_id, resource_name。 通过以下语句,可以发现sql和flink队列使用的费用均为1842元,在总费用3754元中占比为98%。 select resource_id, resouce_name, sum(size) as usage, sum(amount) as sum_amount from spending group by resource_id, resouce_name order by sum_amount desc 图4 查询结果 使用以下语句具体分析sql和flink这两个资源消费的时间段。 select * from spending where resource_id = 'd91d4616-b10c-471a-820d-e676e6c5f4b4' order by ordertime 可以发现sql队列从2020-05-14 17:00:00 GMT+08:00开始,每小时产生5.6元费用,持续到2020-05-28 10:00:00 GMT+08:00,说明这个sql队列在这段时间内持续使用。 同样,也可以发现flink队列在2020-05-14 17:00:00 GMT+08:00到2020-05-28 10:00:00 GMT+08:00这段 内持续使用。 优化建议。 通过以上分析,了解到sql和flink这两个队列几乎是在持续使用的,建议通过购买包周期队列来降低使用成本。另外,对于明确需要使用多少CU时的作业,也可以提前购买对应的CU时套餐包,来降低使用成本。
  • BI工具连接DLI方案概述 BI工具是数据分析的强大助手,提供 数据可视化 、报表生成和仪表板创建等功能。 DLI服务通过对数据的融合分析处理,可以为BI工具提供标准的、有效的高质量数据,供给后续的数据统计分析使用。 通过连接到DLI,BI工具可以更加灵活的使用DLI访问和分析数据,帮助企业快速做出基于数据的决策。 DLI为BI工具提供了便捷的连接方法: DBeaver、DBT和YongHong BI,可以直接通过DLI提供的驱动连接到DLI。这简化了配置过程,使得用户能够直接利用这些工具的强大功能。 PowerBI、Fine BI、SuperSet、Tableau和Beeline,它们可以通过Kyuubi建立与DLI的连接。Kyuubi是一个分布式SQL查询引擎,提供了标准的SQL接口,使得BI工具能够通过Kyuubi与DLI进行交互,执行数据查询和分析。 BI工具连接DLI的方案中使用了DLI SDK V2。 2024年5月起,新用户可以直接使用DLI SDK V2,无需开通白名单。 对于2024年5月之前开通并使用DLI服务的用户,如需使用“DLI SDK V2”功能,必须提交工单申请加入白名单。 父主题: 使用BI工具连接DLI分析数据
  • 资源和成本规划 表1 资源和成本规划 资源 资源说明 成本说明 DLI 数据湖 探索(DLI)作为华为云大数据分析平台,其计费项包括存储费用与计算费用两项,计费类型包括包周期(包年包月),套餐包和按需计费三种。 DLI目前支持三种作业:SQL作业,Flink作业和Spark作业。 SQL作业的计费包括存储计费和计算计费,其中计算计费有包年包月计费和按需计费两种。 包年包月计费根据购买周期进行扣费,推荐使用包年包月模式,价格优惠且在周期内独享计算资源。 按需计费以小时为单位进行扣费。按需计费又分为按CU时计费和按扫描数据量计费,这两种计费方式是互斥的,可根据需要选择其中一种。建议优先选择按CU时计费,可资源独享,且成本核算清晰。同时,按CU时计费还提供套餐包的购买和使用。 CU时资费=CU数*使用时长*单价。使用时长按自然小时计费,不足一个小时按一个小时计费。 扫描数据量资费=执行SQL时产生的扫描数据量*单价。如果计算任务超时或失败,则本次计算不收取费用。 Flink作业和Spark作业的计费只有计算计费,具体计费规则与SQL作业相同。 具体计费规则可以参考华为云官网价格详情。 。
  • 步骤2:安装SuperSet并配置数据连接驱动 下载并安装SuperSet。 详细安装操作指导请参考安装SuperSet 以Docker安装Superset为例: 安装Docker: 确保当前主机系统上安装了Docker。 拉取Superset Docker镜像: docker pull apache/superset 启动Superset容器: docker run -p 8088:8088 apache/superset 启动Superset容器,并将容器的8088端口映射到宿主机的8088端口。 访问Superset: 在浏览器中访问 http://localhost:8088,并使用默认的用户名和密码登录(通常为 admin/admin)。 下载数据驱动。获取Apach Hive驱动包,推荐使用pyhive 0.7.0版本。 安装操作指导请参考安装Hive驱动。
  • 常用操作:SQL作业参数设置 确保kyuubi的/conf/kyuubi-defaults.conf配置打开如下参数开关。 kyuubi.engine.dli.set.conf.transform.to.annotation=true 在sql语句的末尾添加注解参数。 set 参数示例:set dli.sql.current.database=tpchset dli.sql.shuffle.partitions=10 图5 SuperSet参数配置示例 在DLI的SQL编辑器的执行效果:Set参数会修改为注释提交到DLI侧执行。 图6 在DLI的SQL编辑器查看配置的参数
  • 步骤1:安装并配置Kyuubi连接DLI 如需使用外网访问Kyuubi请确保弹性云服务器绑定弹性公网IP,并配置安全组入方向开启10009和3309端口。 安装JDK。 在安装和使用Kyuubi前,确保您的开发环境已安装JDK。 Java SDK要求使用JDK1.8或更高版本。考虑到后续版本的兼容性,推荐使用1.8版本。 下载JDK。 从Oracle官网下载并安装JDK1.8版本安装包。 本例使用jdk-8u261-linux-x64.tar.gz。 将jdk上传到linux服务器对应的目录下并执行解压命令,此处上传到/usr/local目录下。 sudo tar -xzf jdk-8u261-linux-x64.tar.gz -C /usr/local/ 配置环境变量。 编辑.bashrc或.profile文件,添加以下行: export JAVA_HOME=/usr/local/jdk-1.8.0_261export PATH=$PATH:$JAVA_HOME/bin 执行以下命令应用环境变量。 source ~/.bashrc 执行命令java -version,检查是否安装成功,如下显示版本号信息说明java环境安装成功。 java version "1.8.0_261"Java(TM) SE Runtime Environment (build 1.8.0_261-b12)Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode) 安装Kyuubi 访问Apache Kyuubi的下载Kyuubi安装包。了解更多Kyuubi安装操作。 解压下载的Kyuubi安装包。 tar -xzf kyuubi-{version}-bin.tar.gz 配置环境变量(可选): 将Kyuubi的bin目录添加到PATH环境变量中,确保可以在任何位置调用Kyuubi的脚本。 配置Kyuubi连接DLI 在Kyuubi的根目录下添加DLI驱动。 在“DLI SDK DOWNLOAD”页面,单击Kyuubi驱动包链接,下载对应版本的驱动包。 并将该驱动放在kyuubi根目录/externals/engines/jdbc。 确保插件用户组和权限与其他Jar保持一致。 执行以下命令修改Kyuubi配置文件。 cd $KYUUBI_HOME/confvi kyuubi-defaults.conf 配置项说明请参考表1。 表1 kyuubi配置参数说明 配置项 说明 是否必选 示例 kyuubi.engine.type JDBC服务类型。这里请指定为dli。 是 jdbc kyuubi.engine.jdbc.type 引擎类型。请使用dli。 是 dli kyuubi.engine.jdbc.driver.class 连接JDBC服务使用的驱动类名。请使用com.huawei.dli.jdbc.DliDriver 是 com.huawei.dli.jdbc.DliDriver kyuubi.engine.jdbc.connection.url JDBC服务连接的URL。 格式:jdbc:dli://{dliendpoint} /{projectId} 是 jdbc:dli://{dliendpoint} /{projectId} kyuubi.engine.jdbc.session.initialize.sql 用于指定在建立JDBC会话时执行的初始化SQL语句。 否 select 1 如果在DLI的管理控制台看到select 1,代表初始化成功。 kyuubi.frontend.protocols 用于指定Kyuubi服务支持的前端协议。Kyuubi支持多种前端协议,允许用户通过不同的接口与Kyuubi进行交互。 是 mysql thrift_binary kyuubi.engine.dli.schema.show.name 用于指定当用户执行show schemas或show databases语句时,Kyuubi引擎如何展示数据源接口的模式名称。 true:表示在展示模式名称时,包含 DLI 的名称作为前缀。 false:表示在展示模式名称时,不包含 DLI 的名称。 例如如果配置为true,并且有一个DLI名称为 hive,那么在执行show schemas时,输出为hive.default的格式。 如果配置为false,输出为default的格式。 否 true false kyuubi.engine.dli.jdbc.connection.region DLI的区域名称和服务名称。 是 regionname=ap-southeast-2 kyuubi.engine.dli.jdbc.connection.queue DLI服务的队列名称。 是 dli_test kyuubi.engine.dli.jdbc.connection.database 用于指定Kyuubi引擎通过JDBC连接到DLI数据源时默认使用的数据库名称。 是 tpch kyuubi.engine.dli.jdbc.connection.ak AK/SK认证密钥。 如果使用AK/SK认证方式。 是 accesskey=your-access-key kyuubi.engine.dli.jdbc.connection.sk DLI的区域名称和服务名称。 如果使用AK/SK认证方式时配置。 是 secretkey=your-secret-key kyuubi.engine.dli.jdbc.connection.project DLI资源所在的项目ID。 是 0b33ea2a7e0010802fe4c009bb05076d kyuubi.engine.dli.sql.limit.time.sec SQL查询的执行时间限制。 默认600s 否 300 kyuubi.engine.dli.result.line.num.limit SQL查询的返回的最大条数。 默认返回10万条。 配置为-1代表不限制返回的条数。 是 50000 kyuubi.engine.dli.small.file.merge 配置是否开启小文件自动合并。默认为false,代表不开启。 true:开启 false:不开启 是 true kyuubi.engine.dli.bi.type 用于指定BI工具类型。 支持fine/ grafana/ superset/ tableau/ power/dbt/yongHong 是 fine kyuubi.engine.dli.boolean.type.to.int 定义DLI的Boolean类型数据是以1/0返回,还是true/false返回 当BI工具类型为Grafana时,需要设置为true。 true:按1/0返回(1:代表true,0:fales)。 false:按true/false返回。 默认取值false。 否 false kyuubi.engine.dli.set.conf.transform.to.annotation 支持在SQL中设置set spark参数。 PowerBI、FineBI、SuperSet、DBT需要设置为true。 否 true kyuubi.engine.dli.set.conf.sql.suffix 支持在SQL中尾端设置set spark参数。 PowerBI、DBT需要设置为true。 否 true kyuubi.engine.dli.result.cache.enable 是否开启库表数据缓存,开启后自动缓存库表信息。默认为true。 true:开启 false:不开启 否 true kyuubi.engine.dli.cache.limit.line.num 配置缓存的最大条数。 默认缓存10万条。 配置为-1代表不限制缓存的最大条数。 否 1000 kyuubi.engine.dli.cache.time.sec 配置缓存的时间。 默认为1800s。 否 1800 kyuubi.operation.incremental.collect kyuubi会预加载select结果数据到缓存加快读取数据,数据量较大的场景防止内存OOM建议关闭。 否 false 配置为false代表关闭预加载。 kyuubi.engine.jdbc.memory jdbc engine进程内存 默认为1g,建议改成5g以上加大jdbc engine进程内存使用 否 5g 快速启动kyuubi。 进入云服务器的根目录/bin执行以下命令启动kyuubi。 cd /bin./kyuubi start restart 连接成功后,可以执行SQL查询来测试Kyuubi与DLI的连接是否正常工作。 (可选)配置主机的host文件提高Kyuubi的访问效率 为了提高Kyuubi的访问效率,建议在主机的/etc/hosts 配置Kyuubi主机IP的映射关系。 执行ifconfig查看主机IP地址。 图2 查看主机IP地址 将该IP配置在/etc/hosts文件中。 图3 在/etc/hosts文件中配置IP地址
  • 步骤1:上传数据 将数据上传到对象存储服务OBS,为后面使用DLI完成数据分析做准备。 下载OBS Browser+。下载地址请参考《对象存储服务工具指南》。 安装OBS Browser+。安装步骤请参考《对象存储服务工具指南》。 登录OBS Browser+。OBS Browser+支持AK方式登录,以及授权码登录两种登录方式。登录步骤请参考《对象存储服务工具指南》。 通过OBS Browser+上传数据。 在OBS Browser+页面单击“创建桶”,按照要求选择“区域”和填写“桶名”(例如:DLI-demo),创建桶成功后,返回桶列表,单击桶DLI-demo。OBS Browser+提供强大的拖拽上传功能,您可以将本地的一个或多个文件或者文件夹拖拽到对象存储的对象列表或者并行文件系统的对象列表中;同时您也可以将文件或文件夹拖拽到指定的目录上,这样可以上传到指定的目录中。 单击Best_Practice_04.zip获取本示例的测试数据,解压“Best_Practice_04.zip”压缩包,解压后将data文件夹上传到OBS桶根目录下。测试数据目录说明如下: user表数据:data/JData_User product表数据:data/JData_Product comment表数据:data/JData_Product/JData_Comment action表数据:data/JData_Action
  • 数据说明 为保护用户的隐私和数据安全,所有数据均已进行了采样和脱敏。 用户数据 表1 用户数据 字段名称 字段类型 字段说明 取值范围 user_id int 用户ID 脱敏 age int 年龄段 -1表示未知 gender int 性别 0表示男 1表示女 2表示保密 rank Int 用户等级 有顺序的级别枚举,越高级别数字越大 register_time string 用户注册日期 单位:天 商品数据 表2 商品数据 字段名称 字段类型 字段说明 取值范围 product_id int 商品编号 脱敏 a1 int 属性1 枚举,-1表示未知 a2 int 属性2 枚举,-1表示未知 a3 int 属性3 枚举,-1表示未知 category int 品类ID 脱敏 brand int 品牌ID 脱敏 评价数据 表3 评价数据 字段名称 字段类型 字段说明 取值范围 deadline string 截止时间 单位:天 product_id int 商品编号 脱敏 comment_num int 累计评论数分段 0表示无评论 1表示有1条评论 2表示有2-10条评论 3表示有11-50条评论 4表示大于50条评论 has_bad_comment int 是否有差评 0表示无,1表示有 bad_comment_rate float 差评率 差评数占总评论数的比重 行为数据 表4 行为数据 字段名称 字段类型 字段说明 取值范围 user_id int 用户编号 脱敏 product_id int 商品编号 脱敏 time string 行为时间 - model_id string 模块编号 脱敏 type string 浏览(指浏览商品详情页) 加入购物车 购物车删除 下单 关注 点击 -
  • 常用操作:SQL作业参数设置 确保kyuubi的/conf/kyuubi-defaults.conf配置打开如下参数开关。 kyuubi.engine.dli.set.conf.transform.to.annotation=true 在sql语句的末尾添加注解参数。 set 参数示例:set dli.sql.current.database=tpchset dli.sql.shuffle.partitions=10 在DLI的SQL编辑器的执行效果:Set参数会修改为注释提交到DLI侧执行。 图4 在DLI的SQL编辑器查看配置的参数
  • 步骤1:安装并配置Kyuubi连接DLI 如需使用外网访问Kyuubi请确保弹性云服务器绑定弹性公网IP,并配置安全组入方向开启10009和3309端口。 安装JDK。 在安装和使用Kyuubi前,确保您的开发环境已安装JDK。 Java SDK要求使用JDK1.8或更高版本。考虑到后续版本的兼容性,推荐使用1.8版本。 下载JDK。 从Oracle官网下载并安装JDK1.8版本安装包。 本例使用jdk-8u261-linux-x64.tar.gz。 将jdk上传到linux服务器对应的目录下并执行解压命令,此处上传到/usr/local目录下。 sudo tar -xzf jdk-8u261-linux-x64.tar.gz -C /usr/local/ 配置环境变量。 编辑.bashrc或.profile文件,添加以下行: export JAVA_HOME=/usr/local/jdk-1.8.0_261export PATH=$PATH:$JAVA_HOME/bin 执行以下命令应用环境变量。 source ~/.bashrc 执行命令java -version,检查是否安装成功,如下显示版本号信息说明java环境安装成功。 java version "1.8.0_261"Java(TM) SE Runtime Environment (build 1.8.0_261-b12)Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode) 安装Kyuubi 访问Apache Kyuubi的下载Kyuubi安装包。了解更多Kyuubi安装操作。 解压下载的Kyuubi安装包。 tar -xzf kyuubi-{version}-bin.tar.gz 配置环境变量(可选): 将Kyuubi的bin目录添加到PATH环境变量中,确保可以在任何位置调用Kyuubi的脚本。 配置Kyuubi连接DLI 在Kyuubi的根目录下添加DLI驱动。 在“DLI SDK DOWNLOAD”页面,单击Kyuubi驱动包链接,下载对应版本的驱动包。 并将该驱动放在kyuubi根目录/externals/engines/jdbc。 确保插件用户组和权限与其他Jar保持一致。 执行以下命令修改Kyuubi配置文件。 cd $KYUUBI_HOME/confvi kyuubi-defaults.conf 配置项说明请参考表1。 表1 kyuubi配置参数说明 配置项 说明 是否必选 示例 kyuubi.engine.type JDBC服务类型。这里请指定为dli。 是 jdbc kyuubi.engine.jdbc.type 引擎类型。请使用dli。 是 dli kyuubi.engine.jdbc.driver.class 连接JDBC服务使用的驱动类名。请使用com.huawei.dli.jdbc.DliDriver 是 com.huawei.dli.jdbc.DliDriver kyuubi.engine.jdbc.connection.url JDBC服务连接的URL。 格式:jdbc:dli://{dliendpoint} /{projectId} 是 jdbc:dli://{dliendpoint} /{projectId} kyuubi.engine.jdbc.session.initialize.sql 用于指定在建立JDBC会话时执行的初始化SQL语句。 否 select 1 如果在DLI的管理控制台看到select 1,代表初始化成功。 kyuubi.frontend.protocols 用于指定Kyuubi服务支持的前端协议。Kyuubi支持多种前端协议,允许用户通过不同的接口与Kyuubi进行交互。 是 mysql thrift_binary kyuubi.engine.dli.schema.show.name 用于指定当用户执行show schemas或show databases语句时,Kyuubi引擎如何展示数据源接口的模式名称。 true:表示在展示模式名称时,包含 DLI 的名称作为前缀。 false:表示在展示模式名称时,不包含 DLI 的名称。 例如如果配置为true,并且有一个DLI名称为 hive,那么在执行show schemas时,输出为hive.default的格式。 如果配置为false,输出为default的格式。 否 true false kyuubi.engine.dli.jdbc.connection.region DLI的区域名称和服务名称。 是 regionname=ap-southeast-2 kyuubi.engine.dli.jdbc.connection.queue DLI服务的队列名称。 是 dli_test kyuubi.engine.dli.jdbc.connection.database 用于指定Kyuubi引擎通过JDBC连接到DLI数据源时默认使用的数据库名称。 是 tpch kyuubi.engine.dli.jdbc.connection.ak AK/SK认证密钥。 如果使用AK/SK认证方式。 是 accesskey=your-access-key kyuubi.engine.dli.jdbc.connection.sk DLI的区域名称和服务名称。 如果使用AK/SK认证方式时配置。 是 secretkey=your-secret-key kyuubi.engine.dli.jdbc.connection.project DLI资源所在的项目ID。 是 0b33ea2a7e0010802fe4c009bb05076d kyuubi.engine.dli.sql.limit.time.sec SQL查询的执行时间限制。 默认600s 否 300 kyuubi.engine.dli.result.line.num.limit SQL查询的返回的最大条数。 默认返回10万条。 配置为-1代表不限制返回的条数。 是 50000 kyuubi.engine.dli.small.file.merge 配置是否开启小文件自动合并。默认为false,代表不开启。 true:开启 false:不开启 是 true kyuubi.engine.dli.bi.type 用于指定BI工具类型。 支持fine/ grafana/ superset/ tableau/ power/dbt/yongHong 是 fine kyuubi.engine.dli.boolean.type.to.int 定义DLI的Boolean类型数据是以1/0返回,还是true/false返回 当BI工具类型为Grafana时,需要设置为true。 true:按1/0返回(1:代表true,0:fales)。 false:按true/false返回。 默认取值false。 否 false kyuubi.engine.dli.set.conf.transform.to.annotation 支持在SQL中设置set spark参数。 PowerBI、FineBI、SuperSet、DBT需要设置为true。 否 true kyuubi.engine.dli.set.conf.sql.suffix 支持在SQL中尾端设置set spark参数。 PowerBI、DBT需要设置为true。 否 true kyuubi.engine.dli.result.cache.enable 是否开启库表数据缓存,开启后自动缓存库表信息。默认为true。 true:开启 false:不开启 否 true kyuubi.engine.dli.cache.limit.line.num 配置缓存的最大条数。 默认缓存10万条。 配置为-1代表不限制缓存的最大条数。 否 1000 kyuubi.engine.dli.cache.time.sec 配置缓存的时间。 默认为1800s。 否 1800 kyuubi.operation.incremental.collect kyuubi会预加载select结果数据到缓存加快读取数据,数据量较大的场景防止内存OOM建议关闭。 否 false 配置为false代表关闭预加载。 kyuubi.engine.jdbc.memory jdbc engine进程内存 默认为1g,建议改成5g以上加大jdbc engine进程内存使用 否 5g 快速启动kyuubi。 进入云服务器的根目录/bin执行以下命令启动kyuubi。 cd /bin./kyuubi start restart 连接成功后,可以执行SQL查询来测试Kyuubi与DLI的连接是否正常工作。 (可选)配置主机的host文件提高Kyuubi的访问效率 为了提高Kyuubi的访问效率,建议在主机的/etc/hosts 配置Kyuubi主机IP的映射关系。 执行ifconfig查看主机IP地址。 图2 查看主机IP地址 将该IP配置在/etc/hosts文件中。 图3 在/etc/hosts文件中配置IP地址
  • 步骤1:安装并配置Kyuubi连接DLI 如需使用外网访问Kyuubi请确保弹性云服务器绑定弹性公网IP,并配置安全组入方向开启10009和3309端口。 安装JDK。 在安装和使用Kyuubi前,确保您的开发环境已安装JDK。 Java SDK要求使用JDK1.8或更高版本。考虑到后续版本的兼容性,推荐使用1.8版本。 下载JDK。 从Oracle官网下载并安装JDK1.8版本安装包。 本例使用jdk-8u261-linux-x64.tar.gz。 将jdk上传到linux服务器对应的目录下并执行解压命令,此处上传到/usr/local目录下。 sudo tar -xzf jdk-8u261-linux-x64.tar.gz -C /usr/local/ 配置环境变量。 编辑.bashrc或.profile文件,添加以下行: export JAVA_HOME=/usr/local/jdk-1.8.0_261export PATH=$PATH:$JAVA_HOME/bin 执行以下命令应用环境变量。 source ~/.bashrc 执行命令java -version,检查是否安装成功,如下显示版本号信息说明java环境安装成功。 java version "1.8.0_261"Java(TM) SE Runtime Environment (build 1.8.0_261-b12)Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode) 安装Kyuubi 访问Apache Kyuubi的下载Kyuubi安装包。了解更多Kyuubi安装操作。 解压下载的Kyuubi安装包。 tar -xzf kyuubi-{version}-bin.tar.gz 配置环境变量(可选): 将Kyuubi的bin目录添加到PATH环境变量中,确保可以在任何位置调用Kyuubi的脚本。 配置Kyuubi连接DLI 在Kyuubi的根目录下添加DLI驱动。 在“DLI SDK DOWNLOAD”页面,单击Kyuubi驱动包链接,下载对应版本的驱动包。 并将该驱动放在kyuubi根目录/externals/engines/jdbc。 确保插件用户组和权限与其他Jar保持一致。 执行以下命令修改Kyuubi配置文件。 cd $KYUUBI_HOME/confvi kyuubi-defaults.conf 配置项说明请参考表1。 表1 kyuubi配置参数说明 配置项 说明 是否必选 示例 kyuubi.engine.type JDBC服务类型。这里请指定为dli。 是 jdbc kyuubi.engine.jdbc.type 引擎类型。请使用dli。 是 dli kyuubi.engine.jdbc.driver.class 连接JDBC服务使用的驱动类名。请使用com.huawei.dli.jdbc.DliDriver 是 com.huawei.dli.jdbc.DliDriver kyuubi.engine.jdbc.connection.url JDBC服务连接的URL。 格式:jdbc:dli://{dliendpoint} /{projectId} 是 jdbc:dli://{dliendpoint} /{projectId} kyuubi.engine.jdbc.session.initialize.sql 用于指定在建立JDBC会话时执行的初始化SQL语句。 否 select 1 如果在DLI的管理控制台看到select 1,代表初始化成功。 kyuubi.frontend.protocols 用于指定Kyuubi服务支持的前端协议。Kyuubi支持多种前端协议,允许用户通过不同的接口与Kyuubi进行交互。 是 mysql thrift_binary kyuubi.engine.dli.schema.show.name 用于指定当用户执行show schemas或show databases语句时,Kyuubi引擎如何展示数据源接口的模式名称。 true:表示在展示模式名称时,包含 DLI 的名称作为前缀。 false:表示在展示模式名称时,不包含 DLI 的名称。 例如如果配置为true,并且有一个DLI名称为 hive,那么在执行show schemas时,输出为hive.default的格式。 如果配置为false,输出为default的格式。 否 true false kyuubi.engine.dli.jdbc.connection.region DLI的区域名称和服务名称。 是 regionname=ap-southeast-2 kyuubi.engine.dli.jdbc.connection.queue DLI服务的队列名称。 是 dli_test kyuubi.engine.dli.jdbc.connection.database 用于指定Kyuubi引擎通过JDBC连接到DLI数据源时默认使用的数据库名称。 是 tpch kyuubi.engine.dli.jdbc.connection.ak AK/SK认证密钥。 如果使用AK/SK认证方式。 是 accesskey=your-access-key kyuubi.engine.dli.jdbc.connection.sk DLI的区域名称和服务名称。 如果使用AK/SK认证方式时配置。 是 secretkey=your-secret-key kyuubi.engine.dli.jdbc.connection.project DLI资源所在的项目ID。 是 0b33ea2a7e0010802fe4c009bb05076d kyuubi.engine.dli.sql.limit.time.sec SQL查询的执行时间限制。 默认600s 否 300 kyuubi.engine.dli.result.line.num.limit SQL查询的返回的最大条数。 默认返回10万条。 配置为-1代表不限制返回的条数。 是 50000 kyuubi.engine.dli.small.file.merge 配置是否开启小文件自动合并。默认为false,代表不开启。 true:开启 false:不开启 是 true kyuubi.engine.dli.bi.type 用于指定BI工具类型。 支持fine/ grafana/ superset/ tableau/ power/dbt/yongHong 是 fine kyuubi.engine.dli.boolean.type.to.int 定义DLI的Boolean类型数据是以1/0返回,还是true/false返回 当BI工具类型为Grafana时,需要设置为true。 true:按1/0返回(1:代表true,0:fales)。 false:按true/false返回。 默认取值false。 否 false kyuubi.engine.dli.set.conf.transform.to.annotation 支持在SQL中设置set spark参数。 PowerBI、FineBI、SuperSet、DBT需要设置为true。 否 true kyuubi.engine.dli.set.conf.sql.suffix 支持在SQL中尾端设置set spark参数。 PowerBI、DBT需要设置为true。 否 true kyuubi.engine.dli.result.cache.enable 是否开启库表数据缓存,开启后自动缓存库表信息。默认为true。 true:开启 false:不开启 否 true kyuubi.engine.dli.cache.limit.line.num 配置缓存的最大条数。 默认缓存10万条。 配置为-1代表不限制缓存的最大条数。 否 1000 kyuubi.engine.dli.cache.time.sec 配置缓存的时间。 默认为1800s。 否 1800 kyuubi.operation.incremental.collect kyuubi会预加载select结果数据到缓存加快读取数据,数据量较大的场景防止内存OOM建议关闭。 否 false 配置为false代表关闭预加载。 kyuubi.engine.jdbc.memory jdbc engine进程内存 默认为1g,建议改成5g以上加大jdbc engine进程内存使用 否 5g 快速启动kyuubi。 进入云服务器的根目录/bin执行以下命令启动kyuubi。 cd /bin./kyuubi start restart 连接成功后,可以执行SQL查询来测试Kyuubi与DLI的连接是否正常工作。 (可选)配置主机的host文件提高Kyuubi的访问效率 为了提高Kyuubi的访问效率,建议在主机的/etc/hosts 配置Kyuubi主机IP的映射关系。 执行ifconfig查看主机IP地址。 图2 查看主机IP地址 将该IP配置在/etc/hosts文件中。 图3 在/etc/hosts文件中配置IP地址
  • 步骤3:配置Tableau使用ODBC连接到Kyuubi 单击并安装Tableau。获取Tableau安装包。 打开Tableau。 在开始页面的“连接”窗格中,选择你想要连接的数据源类型。本例选择Hive类型的数据连接。 配置数据连接信息。 连接:Hive 服务器:Kyuubi主机的IP地址。 端口:连接Kyuubi的端口,Hive Thrift协议对接,默认端口10009。 身份验证:本例选择用户名的认证方式。 用户名:Kyuubi用户名。 单击“登录”连接Kyuubi。
  • 资源和成本规划 表1 资源和成本规划 资源 资源说明 成本说明 OBS 需要创建一个OBS桶将数据上传到对象存储服务OBS,为后面使用DLI完成数据分析做准备。 OBS的使用涉及以下几项费用: 存储费用:静态网站文件存储在OBS中产生的存储费用。 请求费用:用户访问OBS中存储的静态网站文件时产生的请求费用。 流量费用:用户使用自定义域名通过公网访问OBS时产生的流量费用。 实际产生的费用与存储的文件大小、用户访问所产生的请求次数和流量大小有关,请根据自己的业务进行预估。 DLI 在创建SQL作业前需购买队列,使用DLI的队列资源时,按照队列CU时进行计费。 如购买按需计费的队列,在使用队列资源时,按照队列CU时进行计费。 以小时为单位进行结算。不足一小时按一小时计费,小时数按整点计算。队列CU时按需计费的计算费用=单价*CU数*小时数。
  • 步骤2:使用DLI将 CS V数据转换为Parquet数据 在DLI控制台总览页面左侧,单击“SQL编辑器”,进入SQL作业编辑器页面。 在SQL作业编辑器左侧,选择“数据库”页签,单击创建名字为demo的数据库。 在DLI的SQL编辑窗口,执行引擎选择“spark”,队列选择“default”,数据库选择为“demo”。输入以下建表语句,创建OBS表test_csv_hw并导入test.csv数据。 create table test_csv_hw(id1 int, id2 int, id3 int, id4 int, id5 int) using csv options( path 'obs://obs-csv-parquet/test.csv' ) 在DLI的SQL编辑窗口,执行以下语句可以查询表test_csv_hw中的数据。 图4 查询表test_csv_hw 在DLI的SQL编辑窗口中创建OBS表test_parquet_hw。 create table `test_parquet_hw` (`id1` INT, `id2` INT, `id3` INT, `id4` INT, `id5` INT)using parquetoptions (path 'obs://obs-parquet-data/') 不需要指明具体的文件,因为在将数据从CSV格式转换为Parquet格式之前,不存在任何Parquet文件。 在DLI的SQL编辑窗口中将CSV数据转换为Parquet数据并存储在OBS中。 insert into test_parquet_hw select * from test_csv_hw 检查结果,如图5所示,系统自动创建了一个文件用于保存结果。 图5 保存Parquet数据
  • 步骤1:创建资源 如表2所示,完成VPC、DMS、RDS、DLI、 DLV 资源的创建。 表2 创建资源 资源类型 说明 操作指导 VPC VPC为资源提供云上的网络管理服务。 资源网络规划说明: Kafka与MySQ L实例 指定的VPC需为同一VPC。 Kafka与MySQL实例所属VPC网段不得与创建的DLI队列网段冲突。 创建VPC和子网 DMS Kafka 本例中以DMS Kafka实例作为数据源。 DMS Kafka入门指引 RDS MySQL 本例中以使用RDS提供在线云数据库服务。 购买RDS for MySQL实例 DLI DLI提供实时业务数据分析。 创建DLI队列时请创建“包年包月”或者“按需-专属资源”模式的通用队列,否则无法创建增强型网络连接。 DLI 创建队列 DLV DLV实时展现DLI队列处理后的结果数据。 DLV 创建大屏
  • 资源和成本规划 表1 资源和成本规划 资源 资源说明 成本说明 OBS 需要创建一个OBS桶将数据上传到对象存储服务OBS,为后面使用DLI完成数据分析做准备。 OBS的使用涉及以下几项费用: 存储费用:静态网站文件存储在OBS中产生的存储费用。 请求费用:用户访问OBS中存储的静态网站文件时产生的请求费用。 流量费用:用户使用自定义域名通过公网访问OBS时产生的流量费用。 实际产生的费用与存储的文件大小、用户访问所产生的请求次数和流量大小有关,请根据自己的业务进行预估。 DLI 在创建SQL作业前需购买队列,使用DLI的队列资源时,按照队列CU时进行计费。 如购买按需计费的队列,在使用队列资源时,按照队列CU时进行计费。 以小时为单位进行结算。不足一小时按一小时计费,小时数按整点计算。队列CU时按需计费的计算费用=单价*CU数*小时数。 VPC VPC丰富的功能帮助您灵活管理云上网络,包括创建子网、设置安全组和网络ACL、管理路由表、申请弹性公网IP和带宽等。 VPC本身不收取费用。 但如有互联网访问需求,您需要购买弹性公网IP。弹性公网IP提供“包年/包月”和“按需计费”两种计费模式。 了解VPC计费说明。 DMS Kafka Kafka提供的消息队列服务,向用户提供计算、存储和带宽资源独占式的Kafka专享实例。 Kafka版支持按需和包周期两种付费模式。Kafka计费项包括Kafka实例和Kafka的磁盘存储空间。 了解Kafka计费说明。 RDS MySQL 数据库 RDS for MySQL提供在线云数据库服务。 RDS对您选择的数据库实例、数据库存储和备份存储(可选)收费。 了解RDS计费说明。 DLV DLV适配云上云下多种数据源,提供丰富多样的可视化组件,快速定制数据大屏。 使用DLV服务的费用主要是DLV包年包月套餐的费用,您可以根据实际使用情况,选择合适的版本规格。 了解DLI产品价格详情。
  • 数据说明 数据源表:电商业务订单详情宽表 字段名 字段类型 说明 order_id string 订单ID order_channel string 订单生成的渠道(即web方式、app方式等) order_time string 订单时间 pay_amount double 订单金额 real_pay double 实际支付金额 pay_time string 支付时间 user_id string 用户ID user_name string 用户姓名 area_id string 订单地区ID 结果表:各渠道的销售总额实时统计表。 字段名 字段类型 说明 begin_time varchar(32) 开始统计指标的时间 channel_code varchar(32) 渠道编号 channel_name varchar(32) 渠道名 cur_gmv double 当天GMV cur_order_user_count bigint 当天付款人数 cur_order_count bigint 当天付款订单数 last_pay_time varchar(32) 最近结算时间 flink_current_time varchar(32) Flink数据处理时间
  • 步骤2:获取DMS连接地址并创建Topic 在控制台单击“服务列表”,选择“分布式消息服务DMS”,单击进入DMS服务控制台页面。在“Kafka专享版”页面找到您所创建的Kafka实例。 图2 Kafka实例 进入实例详情页面。单击“基本信息”,获取“连接地址”。 图3 获取连接地址 单击“Topic管理”,创建一个Topic:trade_order_detail_info。 图4 创建Topic Topic配置如下: 分区数:1 副本数:1 老化时间:72h 同步落盘:否
  • 流程指导 使用DLI Flink进行电商实时业务数据分析的操作过程主要包括以下步骤: 步骤1:创建资源。在您的账户下创建作业需要的相关资源,涉及VPC、DMS、DLI、RDS。 步骤2:获取DMS连接地址并创建Topic。获取DMS Kafka实例连接地址并创建DMS Topic。 步骤3:创建RDS数据库表。获取RDS实例内网地址,登录RDS实例创建RDS数据库及MySQL表。 步骤4:创建DLI增强型跨源。创建DLI增强型跨源,并测试队列与RDS、DMS实例连通性。 步骤5:创建并提交Flink作业。创建DLI Flink OpenSource SQL作业并运行。 步骤6:查询结果。查询Flink作业结果,使用DLV进行大屏展示。
  • 应用场景 当前线上购物无疑是最火热的购物方式,而电商平台则又可以以多种方式接入,例如通过web方式访问、通过app的方式访问、通过微信小程序的方式访问等等。而电商平台则需要每天统计各平台的实时访问数据量、订单数、访问人数等等指标,从而能在显示大屏上实时展示相关数据,方便及时了解数据变化,有针对性地调整营销策略。而如何高效快捷地统计这些指标呢? 假设平台已经将每个商品的订单信息实时写入Kafka中,这些信息包括订单ID、订单生成的渠道(即web方式、app方式等)、订单时间、订单金额、折扣后实际支付金额、支付时间、用户ID、用户姓名、订单地区ID等信息。而我们需要做的,就是根据当前可以获取到的业务数据,实时统计每种渠道的相关指标,输出存储到数据库中,并进行大屏展示。
  • 常用操作:SQL作业参数设置 根据安装ODBC驱动类型选择配置方法: 使用Cloudera Hive ODBC (v2.5.12)驱动 只需在sql语句的末尾添加注解参数。 -- @set 参数示例:-- @set dli.sql.current.database=tpch-- @set dli.sql.shuffle.partitions=100 图6 ODBC配置参数示例(Cloudera Hive ODBC) 使用Microsoft Hive ODBC (v2.6.12.1012)驱动 确保kyuubi的/conf/kyuubi-defaults.conf配置打开如下参数开关。 kyuubi.engine.dli.set.conf.transform.to.annotation=truekyuubi.engine.dli.set.conf.sql.suffix=true 在sql语句的末尾添加注解参数。 set 参数示例:set dli.sql.current.database=tpchset dli.sql.shuffle.partitions=100 图7 ODBC配置参数示例(Microsoft Hive ODBC) 在DLI的SQL编辑器的执行效果: 图8 在DLI的SQL编辑器查看配置的参数
  • 步骤3:配置Power BI使用ODBC连接到Kyuubi 单击并安装PowerBI。获取PowerBI安装包。 打开Power BI Desktop。 单击“主页”选项卡下的“获取数据”按钮。 在“获取数据”窗口中,选择“更多...”以查看其他数据源选项。 从列表中选择“ODBC”作为数据源类型,然后单击“连接”。 在弹出的“ODBC驱动管理器”窗口中,选择步骤2:配置ODBC连接Kyuubi配置的ODBC数据源名称,单击“确定”。 Power BI将使用ODBC连接到Kyuubi,并允许你预览和选择数据库中的表和视图。 在预览库表时请选择limit,否则分区表将全表扫描。
共99354条