4.互联网、电商离线大数据分析最佳实践(三)|学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 快速学习4.互联网、电商离线大数据分析最佳实践

开发者学堂课程【DataWorks一站式大数据开发治理平台精品课程:4.互联网、电商离线大数据分析最佳实践】与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/81/detail/1252


4.互联网、电商离线大数据分析最佳实践(三)

七、操作

提供最佳实践的文档。可以通过阿里云的官网,解决方案,最佳时间,最佳实践的频道,里面提供了最佳实践目前有140多篇,离线大数据分析,直接用 word 进行演示,可以在控制台上通过地址查看。

1、搭建电商网站 demo

说明:部署云上资源可以通过阿里云管理控制台或Terraform两种方

式实现,选择其一即可。

Democode下载:

使用 gitclonehttps://code.aliyun.com/best-practice/060.git

下载democode。

(1)通过阿里云管理控制台部署云上资源

1创建专有网络VPC:

步骤1登录阿里云管理控制台。

(https://home.console.aliyun.com)

步骤2通过产品与服务导航,定位到专有网络 VPC,单击进入专有网络管理控制台。

云资源的部署,比如 vpc 环境的创建,ecs 的创建绑定ERP,安全组的规则设置包括 rds,像int的部署访问配置到 rds,这些是基本的云资源的开通和和部署,提供了两种方式,一种是通过控制态,可以通过文档有非常详细的操作的步骤,可以按照一步一步的操作构建演示的环境。

步骤3在页面上方,选择地域为华南1(深圳)。

步骤4在专有网络页面,单击下方的创建专有网络。

步骤5在创建专有网络页面,配置专有网络和交换机相关参数,并单击确定。

2、通过 Terraform 部署云上资源

(1)背景信息

熟悉云上资源部署的用户,可使用 Terraform 进行操作,效果与通过阿里云管理控制台实现的效果完全一致。使用 Terraform,可快速部署云资源,并进行多云管理。Terraform 是第三方提供资源管理的一个工具,它能够支持像阿里云aws或者其他的一些云,它资源的部署,包括资源的管理,比如要打标签升降配,这些都是可以通过 Terraform 来实现的。也就是能通过API实现的基本的功能,可以通过 Terraform的脚本来实现资源的统一管理。Terraform 不是本次的核心,但是如果对Terraform感兴趣,也可以通过 Terraform 的最佳实践,提供了两个 Terraform 的最佳实践,可以通过最佳实践学习,这里面会有非常详细的介绍 Terraform 的使用。

(2)操作步骤

步骤1登录 Terraform 官网下载页面。

(https://www.terraform.io/downloads.html)。

步骤2单击 downloadolderversionsofTerraform,下载系统对应的安装程序(根据官网下载最新版本,本文用的是0.11.1版)。可以通过 Terraform 快速的部署一套电商网站的系统,当提供的地址下载下来之后,democode 里面有相应的sql的脚本。里面也提供了 Terraform 的脚本,进到 Terraform 脚本的目录里,就是现在所在的目录,执行 Terraform 命令。在脚本里面,首先是需要配置ak信息,再做执行,执行Terraform 命令后,可以看到它会做初始化,包括里 model 配置包括插件的一个配置,可以看到这里面实际上用的是阿里巴巴 cloud 的一个 provider,如果 Terraform 脚本里面配置的其他的云厂商,它同样的会下载其他云厂商的 Terraform 的插件。这样就可以实现对于云资源的管理,包括多云的管理,甚至可以把线下idc的资源也能作为一个 provider 提供,能够实现云上和云下的统一的资源管理,这些都是可以通过 Terraform 实现的。接下来在用 Terraform 命令就可以查看,脚本里面需要创建的哪些资源,这里面会全部的一一列出来。因为之前已经部署过了,这里面就是创建的整个资源,之前已经创建过了,确认这些资源创建没有问题之后,就 Terraformapply 命令,执行就可以创建完整的一个演示环境。创建完之后可以在控制台上看到相应的资源,比如里面创建的rds,ecs

的资源,包括它跟 ecs 跟ERP的绑定关系,像 rds 里面的数据库的创

建,包括数据库账号的创建都是可以通过 Terraform 脚本实现的,这

里面可以通过公网IP访问电商网站,进行基础的配置,网站已经部

署好了。

3、DataWorks 大数据处理

(1)业务数据是放到的 mysql 的 rds 数据库里面的,首先要把数据同步到 maxcompute 里面,所以创建的 maxcompute 的项目,进入到 dataworks 的控制台,创建相关的项目,创建工作空间。创建一个工作空间,之前创建过不能重名,首先要输入一个工作空间的名字,再选一个模式,模式提供两种,一个是简单模式,一个是标准模式,比如做poc的测试或者演示,可以使用大环境来做,生产时建议用标准的模式,它是一个开发的生产隔离的系统,做演示就使用简单模式即

可。

(2)接下来就是一个引擎的选择,可以看到数据集成是一个默认的,选择计算的服务,使用 maxcompute 作为计算的引擎,如果是有实时计算的需求,可以勾选实时计算,也可以跟emr对接,也可以跟POLO对接包括adv,还有机器学习,这里面就可以根据项目开发的需求做选择,这次使用 maxcompute 做。

(3)接下来就是下一步创建,创建输入显示实例的名字,创建工作工作空间,选择完之后就可以创建。

(4)数据同步,进入项目,可以看到数据集成的服务,对数据集成来讲,它实际是把上下游的数据源进行一个连通,所以这里面就需要配置的数据源,也就是数据从哪里读取,最后数据写到哪里,这里面需要配置数据源,点数据源管理,之前创建过,首先要知道业务系统的数据是在mysql数据库里面,创建数据源,这里面可以看到 dataworks 提供的对接,基本上能够对接阿里云的所有的数据产品,还包括开源的产品,都能够直接把数据给对接进来。

(5)使用的像 mysql 数据库,后面也会介绍 postgresql 对接,adv的对接,odps 的数据,datahub,hive,hibase,hologres包括oss,hdfs,这里面提供了相当丰富的数据源,可以根据自己的需求进行配置就可以。本次使用mysql数据库,定义一个名称,配置数据库的实例ID,就是创建的实例ID,可以把数据库的实例ID配置进去,包括账号的ID,可以通过阿里云的uid,可以配置数据库的账号,可以看到,之前是已经创建了数据库的账号,可以通过 Terraform 脚本直接创建的。这是数据库的账号,数据库的名称也可以在rds里面看到,数据库的密码进行配置,可以测试连通性。这里面还要需要配置的就是 dataworks 的白名单加到的rds里面,这里面提供了白名单,可以看到业务系统rds是部署在华南的,所以需要拷贝华南的白名单。

1.png

也就是能够让 dataworks 能够访问的rds,所以需要在rds里面配置白名单,需要设置白名单,拷贝进来,设置一个名字,确定,就是添加了相应的白名单。

(6)这些内容配置完之后,可以测试连通性,通过了之后就可以确定完成。创建完数据源之后,需要做数据的开发,首先要做数据的集成,可以找到之前创立项目,进入到数据开发,新建一个业务流程,所有业务的流程,包括数据集成,包括 etl,包括表的创建,都是可以通过的完整的业务流程来做搭建的,包括里面的调度,比如输入一个新建一个业务流程 magenta2。

(7)首先是一个数据集成di,离线的同步,也可以基于 maxcompute 做数据开发,比如otps 的 sql,像 Python 像 spark,emr,这些都是可以支持的,包括其他用到的通用的节点,包括需要虚拟节点,包括holo的开发,adb的开发,datalake 的开发,首先使用的是数据集成,创建数据集成的节点,新建一个节点,这个就是数据集成的节点。双击之后可以进入到具体的配置。

2.png

(10)直接运行就是执行当时的任务,这里面使用的是默认的一个资源组,在odps里面使用的是一个分区表,现在执行的任务写到20200318分区里面,执行。等执行完之后,可以看到数据。 (11)因为没有做任何的字段的过滤,它实际上是把sales order 全表都是同步到分区里面,但是很多时候是需要做增量的同步,这时就可以通过数据过滤的功能,这里面不需要写var,会有时间的字段,比如有一个data字段,写一个调度的参数。date >=${begain_timel}and date <=${end_timel}最终再调度参数,这样就可以选择某一个时间点,比如任务执行时,从某一个时间点读取相应数据,最终写到分析表里面,这样做增量的同步。

(12)现在任务已经执行完了,执行完了之后可以看到这里面会有自己的一个表,刚刚创建的表是 sales datav1,点击表,可以看到里面已经有数据同步过来,已经把rds的数据同步到 maxcompute 里面了,这是数据集成的功能。

(13)在业务的开发过程中,常常需要对数据进行开发,比如做etl,对数据做转换,处理,或者写到其他的表里面,这时就可以通过 dataworks 做数据的开发。 (14)创建一个表,sales datav2,文档里面有详细的配置参考,把字段添加进去total_quantity,选择 double 保存,再添加另外一个字段 total_sales,输入一个名字,这就是做完etl之后,要写入的结果表,也就是把数据从rds同步过来之后,但是要对数据进行一个处理,比如模拟的就是要统计总体的一个销售额和销售量,做这样的一个业务场景,新建了两个字段,会把原始的订单数据处理完之后,写到的结果表,提交到生产环境,提到生产环境之后就不能更改了。

3.png15)创建好结果表,接下来就需要对数据进行处理,使用 odps sql 来做处理。比如输入节点的名字,双击就可以做数据的开发,这里面是 odps 这里面提供了相应的处理脚本可以打开一下,里面有需要的脚本的内容,把粘贴进来,里面做的事情非常的简单,根据自己的表做设计,插入到表里面。从原始表里面读取数据,做了汇总的操作,最终把数据写到的结果表里面。 INSERT INTO sales datav2: SELECT sum(total_qty_ordered) AS total_quantity sum(grand_total) AS total_sales FROM sales_ datav1 WHERE ds=${bizdate};

(16)这就是简单的数据开发,可以看到这里面会有相应的函数,在在 dataworks里面可以看到,里面有相应的,比如要做平均,要做 count,max,sum 包括日期的处理,运算,这些基本的函数,但是如果要做复杂的处理,也支持udf的定义,也就是自己可以开发相应的函数,上传上来,同样是可以通过 odps sql 来执行的。创建了一个简单的 odps SQL 的处理之后,做执行。选择3月18号分区,再执行。执行完之后,他会把数据,统计完的数据写到 sales datav2表里面,执行结束,在里面可以看到这张表的。可以看到销售量是4个销售额是204,做了一个汇总的统计。

4、数据服务API开发

(1)刚刚的数据开发这一部分都已经处理完了,接下来要把数据,怎么样能够跟data v对接起来,就是怎么让 datav 实时的访问 maxcompute 的结果表。这里面可以通过的数据服务,来做API的开发。进入到 dataworks 里面,全部产品里面有一个数据服务,把要访问的数据,包装成 open api 的形式提供出去,除了给 datav之外,业务系统如果需要数据的访问的API,也可以通过数据服务来做,在这里首先新建一个数据源,这里面需要的数据源是的 postgres sql,这里有两种选择,访问 odps 用来加速,可以使用的就是 postgres sql,现在有升级版本 hologres,也可以对接 hologres 服务访问的 maxcompute 做加速的服务。

(2)使用 postgres sql,使用 jdbc 的一个连接,这里面需要配置的一个信息,首先是名字,自己定义就可以了,接下来要配置jdbc的URL,可以看文档上提供的,  配置项 说明  数据源类型 连接串模式  数据源名称 magento lightning  JDBC URL jdbc:postgresq://lightning.cn shenzhen.maxcompute.aliyun.com:443/magento offline xy endpoint参考文档: https://help.aliyun.com/document detail/89754.htmI-  用户名 输入账号的AccessKey ID  密码 输入账号的 AccessKey Secret  测试连通性 单击测试连通性  实际上提供的就是lighting的端点地址,后面就是项目的名字,因为这里面使用的是深圳的项目,如果是其他的,可以参考文档做其他的endpoint的配置。拷贝进来,这里面名字就是项目名字,根据自己创建项目来做修改即可,可以测试连通性配置。地址配置完之后,就要填用户名和密码,用户名和密码实际上就是 AccessKey ID 和 AccessKey Secret,这里面可能会有概念的模糊,这里实际上使用的就是ak的信息,可以去个人的用户中心找到的ak的信息,配置完之后,就是现在这里面配置的数据源,配置完数据源。

(3)配置完数据源之后,可以做数据的开发,首先做API的分组。生成API,可以用向导模式做,可以看到现在是提供API的创建。 配置项 说明  API名称 total quantity-  API分组 sales  协议 HTTP ,这里演示仅使用HTTP协议,如果勾选 https 协议需要在API网关中配置HTTPS证书才能正常使用。生产环境建议使用 HTTPS 协议。  API Path /total quantity  描述 总共销售量APi  比如创建销售量的API,可以输入API的名字,选择分组,再输入路径。 这里面协议提供了两种方式,最后使用的api里面需要访问的协议,以选择一种来做,如果是http直接用http,如果是要https的,要把https给勾上,但是使用https,一定要配置https证书的,实际上服务就是使用API网关的一个服务,最终在这里面创建了API,实际上是在API网关里面创建的,可以先创建一个API,接口已经存在,这里面就要避免重名的问题。如果是首次创建,需要在API网关上开通服务,如果没有开通API网关,会报错,这里面可以看到,创建了两个分组,进到分组里面,创建相应的API,可以对数据进行一个配置,创建的数据源是 Postgre 数据源,数据源的名字,里面有相应的表,要读取的就是sales datav2表,这里面就可以把API给封装起来,这设置成返回参数,做相应的配置,结果的一个一个分组哈,讲结果的一个分页,再保保存,可以做一个简单的一个一个测试哈,就可以做测试,这里面就可以可以看到最后会通过ak调用,结果的分页,保存,做一个简单的测试,最后会通过API的调用,标准的返回,封装好的API,可以发布。发布完API就已经可以使用了。 "data": { "totalNun": 1, "pageSize": 10, ‘'raws":{ ‘’total quantity": 4 } } "pageNun": 1 }, "errCode": 0, ‘’requestId": " da41b75d-Bce4-4af0-9120- ab270Đ6a5bf6" ,  "errNsg": "success" }

5、DataV 大屏展示

(1)API开发完之后,再把数据对接到的 datav。打开 datav 的项目,进到datav的控制台,新建可视化的界面,这里面就可以创建,可以用空白的,也可以完全自己搭建,当然也可以使用这里面非常多非常丰富的一个模板。这里面选择集团数据的模板,输入一个名字,销售数据看板,这里面创建这样的大屏。

4.png

(2)这里面有组件,在界面上已经部署好了,也可以做修改,比如修改标题,2020年的销售额,比如后缀是一元改成元,这些组件包括基本的颜色,字体的大小都是可以自定义的,如果是空白的创建,这里面也是提供了非常丰富的组件,可以自己使用的,包括柱状图,包括其他的文字的使用,其他的图表,都是可以直接添加到自己的界面上的,这里使用了默认的组建,做了相应的修改,可以把数据对接进来,首先选择的数据源,包括静态的数据,自己做一些测试,比如csv文件,包括API网关,这些都是可以直接对接进来的。oss日志服务,使用 dataworks 数据服务,就是前面开发的API,需要注意的是因为API刚刚没有用 https 开发,所以把界面切换到http上,如果最终是要做 https 的API,这里面就不需要做更改。

(3)切换到HttP的访问,再做配置,需要配置数据服务的数据源,在datav里面添加数据,创建数据源,这里使用的是华南,项目就是 magenlo oline xy2020之前创建的项目,还需要一个 APPkey 和一个 APPsquare,这两个字段如何获取?在数据服务里面有一个服务管理,到API调用,这里面提供了两种认证方式,复制粘贴,这样就可以通过 datav 里面的数据源,连接到之前开发的API的服务,创建就有新的数据源了,可以选择的相应的接口。这里就用之前创建的智能接口来使用,通过API可以看到已经有相应的数据,跟测试的结果实际上是一样的。现在数据还不能展示,因为是需要展示 total_sales 字段,所以需要对数据进行一个过滤,添加一个过滤器,data 输入的是"total_ sales": 204.03。

(4)通过字段的解释能力,输入data进行过滤,保存,这时可以看到,现在得到的结果就是想要的结果了,关掉,因为现在字段是 total_ sales, value它没有自动找到,可以做相应的映射,把 value 字段映射到 total_ sales上,可以再试一下。 (5)这时就可以看到,datav 在数据中就能够直接展示出来了,

(6)同样可以做一个自动更新,如果对实时性要求不是很高,比如60秒更新一次,做完之后可以发布,发布之前也可以做相应的预览,做测试,都没有问题再把大屏给发布出来,这时再访问界面,就可以看到数据,就是能够对接到实时访问结果表。

5.png6、更新离线数据大屏展示测试

(1)在实际的开发应用过程中,数据肯定是一个不断起落的过程,肯定需要做数据的增量的同步,再做一个测试,比如模拟应用系统就是用户又下单了这样的场景,登录,模拟用户购买两个商品,用户下单,下单的订单数据就会写到rds的订单表里面,订单表如何做增量比如t+1的同步,可以在 dataworks 里面配置相关的调度。

2)开发了就是两个任务,一个是数据集成,一个是数据处理,可以进到业务流程里面,在业务流程里面,做相应的配置,首先这两个统一的来看,让它能够实现关联的关系,也就是先执行数据集成的功能,再做数据的处理,把这两个关联起来。

(3)对调度参数进行配置,首先是 bizdata,就是调度的前一天,比如19号处理的数据,做t+1的数据,就可以用字段,字段就是调度执行的时间的前一天的日期,就是一个相关的参数,比如可以设计一个重跑的配置,按照每日做调度,因为是起始的节点,需要在它的上游配置一个根节点,让他从跟节点开始执行,首先可以使用工作空间的一个跟节点来做配置,对数据集成的调度参数一个基本配置,保存一下。另外就是etl的任务,也需要做相应的配置,这里面一个基本的参数,这里面也有的 bizdata 的参数,也需要配置 bizdata 参数,同样配置重跑的属性,让它去调度,这里面就不需要做自动的解析。可以看到做的关联,它能够把上游的节点作为它的一个输入节点添加进来,这时再保存,就可以执行任务,运行一下。做测试,这时它就会先执行数据集成,再做数据的处理,写到结果表里面,执行需要一些时间,对这些节点已经配置了调度参数,如果是第一次提交,会把这两个节点选择进来,提交。

(4)可以看到都发生了变化,测试的数据已经写到结果表里面了。

6.png

(5)刷新时间比较长,也可以看到,比如数据60秒的刷新时间,它能够在60秒之后,把最新的数据同步进来,最终会在大屏展示出来,已经能够把增量的数据显示出来了。因为是手动执行的,在正常的业务流程里面,已经配置了调度的参数,调度就是每天根据配置的参数,它会在每天凌晨时,在00:29,它就会调度任务,相当于是手动执行,如果是配置调度,相当于在配置调度的时间时,它就会执行,调度任务在这里面提交。

(6)把节点提交上去,提交上去之后,可以在运维中心里面看到发布的实例,这里面可以看到任务已经提交上去了,这里面会有相应的实例,可以看到任务的执行,在19号的凌晨19分已经成功执行任务,相应的日志都可以看得到,跟运行做同一个操作,这样它能够每天的做数据的增量的同步,

7、总结

首先有一个电商网站,有它自己的一个业务系统,这里模拟的数据是从rds过去的,也可以直接对接日志服务的数据源,这些数据需要做相应的分析,因为根据相应的业务的要求,可以做离线的分析,比如做t+1的分析就够了,这样的业务场景,这时可以把这些数据同步到的 maxcompute 里面,在 maxcompute 里面做相应的etl,maxcompute 里面提供的像基础函数的处理,同时支持udf能够做复杂处理,处理完之后的结果表,把它写到 maxcompute 里面,比如对接务系统需要访问数据的API,可以通过数据服务提供相应的API, API也可以提供 datav 做相应的展示,在 datav 里面配置数据服务的API,最终实现大屏的展示或者通过API给其他应用去使用,这就是一个简单的离线大数据分析的 demo。

相关文章
|
26天前
|
存储 机器学习/深度学习 SQL
大数据处理与分析技术
大数据处理与分析技术
88 2
|
16天前
|
机器学习/深度学习 存储 大数据
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系,保留最大方差信息,实现数据压缩、去噪及可视化。本文详解PCA原理、步骤及其Python实现,探讨其在图像压缩、特征提取等领域的应用,并指出使用时的注意事项,旨在帮助读者掌握这一强大工具。
32 4
|
17天前
|
关系型数据库 分布式数据库 数据库
PolarDB 以其出色的性能和可扩展性,成为大数据分析的重要工具
在数字化时代,企业面对海量数据的挑战,PolarDB 以其出色的性能和可扩展性,成为大数据分析的重要工具。它不仅支持高速数据读写,还通过数据分区、索引优化等策略提升分析效率,适用于电商、金融等多个行业,助力企业精准决策。
30 4
|
17天前
|
机器学习/深度学习 分布式计算 算法
【大数据分析&机器学习】分布式机器学习
本文主要介绍分布式机器学习基础知识,并介绍主流的分布式机器学习框架,结合实例介绍一些机器学习算法。
105 5
|
2月前
|
存储 机器学习/深度学习 分布式计算
大数据技术——解锁数据的力量,引领未来趋势
【10月更文挑战第5天】大数据技术——解锁数据的力量,引领未来趋势
|
25天前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
196 7
|
25天前
|
存储 分布式计算 大数据
大数据 优化数据读取
【11月更文挑战第4天】
39 2
|
1月前
|
数据采集 监控 数据管理
数据治理之道:大数据平台的搭建与数据质量管理
【10月更文挑战第26天】随着信息技术的发展,数据成为企业核心资源。本文探讨大数据平台的搭建与数据质量管理,包括选择合适架构、数据处理与分析能力、数据质量标准与监控机制、数据清洗与校验及元数据管理,为企业数据治理提供参考。
78 1
|
22天前
|
存储 大数据 数据管理
大数据分区简化数据维护
大数据分区简化数据维护
24 4
|
1月前
|
存储 大数据 定位技术
大数据 数据索引技术
【10月更文挑战第26天】
55 3