
阿里云MaxCompute产品经理,帮助每一个想使用大数据计算服务的同学轻松上云。
通过policy配置权限过程中遇到的一些问题 背景信息: 本文以如下场景为基准进行编写,如下: 用户通过DataWorks-简单模式使用MaxCompute; 用户具有DataWorks默认角色,如DataWorks开发者角色; 用户通过console提交policy配置精细化权限管控, 本案例以禁止某一些用户群体(role)可以删除以tb_开头的表为例来展开讨论。 解决方案: 通过policy进行deny某个role禁止删除以tb_开头的表,同时将属于这一部分的user都添加到该角色中。具体如下: create role denydroprole; put policy t_policy.json on role `denydroprole;` grant `denydroprole to RAM$..;` t_policy.json配置文件如下: { "Version": "1", "Statement": [{ "Effect": "Deny", "Action": "odps:Drop", "Resource": "acs:odps:*:projects/sz_mc/tables/tb_*" }] } 查看上述配置的子账号权限: 针对上图的说明: [roles]该子账号同事隶属与两个角色,一个是新建的denydroprole,一个是DataWorks的开发者角色role_project_dev。 [Authorization Type: Policy]其中A代表Allow,D代表Deny,当两者同事存在时,deny优先原则。 是否符合预期: (1)在DataWorks上进行测试: 居然删除成功了!!!纳尼,是我们配置策略不对嘛??? (2)再在console上进行验证: 在MaxCompute console上测试策略生效了,删除以tb_开头的表直接被拒绝并且返回错误。 这是为什么呢??为什么呢??其实在这一块需要注意的是,在DataWorks-工作空间配置-计算引擎信息-访问身份()配置情况。 访问身份大科普: 这个要看下我们在项目管理里面的账号设置是个人账号还是系统账号。两个最大的区别如下:dataworks这里的角色,会有两种权限,一种是dataworks界面操作权限,一种是MaxCompute数据相关权限(建表、查询等)。 然后有两种情况: 1)如果MaxCompute访问身份为 个人账号,那么角色的“MaxCompute数据相关权限”就会生效,这个子账号用其他客户端操作MaxCompute都可以有这个project的相关权限。 2)如果MaxCompute访问身份为 系统账号,那么角色的“MaxCompute数据相关权限”就不会生效,这个子账号在dataworks上提交的MaxCompute任务因为是通过系统账号提交所以只要系统账号有权限就可以。但是子账号用非dataworks的客户端提交MaxCompute就会没权限。详情可以参考:https://yq.aliyun.com/articles/686800 对应如下逻辑示意图: 那么,到这里亲们应该明白了,为什么在DataWorks中测试发现policy策略没有生效么?是因为配置的访问身份为系统账号,那么通过DataWorks提交的Query都会用系统账号来执行(project owner拥有最大权限且并没有受到该policy限制)。 你只需要在这里设置为【个人账号】即可满足上述需求。 获取帮助:
通过DataWorks归档日志服务数据至MaxCompute 官方指导文档:https://help.aliyun.com/document_detail/68322.html但是会遇到大家在分区上或者DataWorks调度参数配置问题,具体拿到真实的case模拟如下: 创建数据源: 步骤1 进入数据集成,点击作业数据源,进入Tab页面。 步骤2 点击右上角新增数据源,选择消息队列 loghub。 步骤3 编辑LogHub数据源中的必填项,包括数据源名称、LogHubEndpoint、Project、AK信息等,并点击 测试连通性。 创建目标表: 步骤1 在左侧tab也中找到临时查询,并右键>新建ODPS SQL节点。 步骤2 编写建表DDL。步骤3 点击执行 按钮进行创建目标表,分别为ods_client_operation_log、ods_vedio_server_log、ods_web_tracking_log。 步骤4 直到日志打印成本,表示三条DDL语句执行完毕。 步骤5 可以通过desc 查看创建的表。 其他两张表也可以通过desc 进行查询。确认数据表的存在情况。 创建数据同步任务 数据源端以及在DataWorks中的数据源连通性都已经配置好,接下来就可以通过数据同步任务进行采集数据到MaxCompute上。操作步骤步骤1 点击新建业务流程 并 确认提交,名称为 直播日志采集。 步骤2 在业务流程开发面板中依次创建如下依赖并命名。 依次配置数据同步任务节点配置:web_tracking_log_syn、client_operation_log_syn、vedio_server_log_syn。 步骤3 双击web_tracking_log_syn 进入节点配置,配置项包括数据源(数据来源和数据去向)、字段映射(源头表和目标表)、通道控制。 根据采集的时间窗口自定义参数为: 当然其消费点位也可以按照自定义设置5分钟调度一次,从00:00到23:59,startTime=$[yyyymmddhh24miss-10/24/60]系统前10分钟到endTime=$[yyyymmddhh24miss-5/24/60]系统前5分钟时间(注意与上图消费数据定位不同),那么应该配置为ds=[yyyymmdd-5/24/60],hr=[hh24-5/24/60],min=[mi-5/24/60]。步骤4 可以点击高级运行进行测试。 可以分别手工收入自定义参数值进行测试。 步骤3 使用SQL脚本确认是否数据已经写进来。如下图所示: 日志服务的日志正式的被采集入库,接下来就可以进行数据加工。比如可以通过上述来统计热门房间、地域分布和卡顿率,如下所示: 具体SQL逻辑不在这里展开,可以根据具体业务需求来统计分析。依赖关系配置如上图所示。 欢迎入群进行产品资料获取以及获取帮助:
Amazon Redshift数据迁移到MaxCompute Amazon Redshift 中的数据迁移到MaxCompute中经常需要先卸载到S3中,再到阿里云对象存储OSS中,大数据计算服务MaxCompute然后再通过外部表的方式直接读取OSS中的数据。如下示意图: 前提条件 本文以SQL Workbench/J工具来连接Reshift进行案例演示,其中用了Reshift官方的Query editor发现经常报一些奇怪的错误。建议使用SQL Workbench/J。 下载Amazon Redshift JDBC驱动程序,推荐4.2 https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/1.2.16.1027/RedshiftJDBC42-1.2.16.1027.jar 在SQL Workbench/J中新建Drivers,选择下载的驱动程序jar,并填写Classname为 com.amazon.redshift.jdbc42.Driver。 配置新连接,选择新建的Driver,并复制JDBC url地址、数据库用户名和密码并勾选Autocommit。 如果在配置过程中发现一只connection time out,需要在ecs的vpc安全组中配置安全策略。具体详见:https://docs.aws.amazon.com/zh_cn/redshift/latest/gsg/rs-gsg-authorize-cluster-access.html Amazon Redshift数据预览 方式一:在AWS指定的query editor中进行数据预览,如下所示: 方式二:使用Workbench/J进行数据预览,如下图所示:具体Workbench/J的下载和配置详见:https://docs.aws.amazon.com/zh_cn/redshift/latest/mgmt/connecting-using-workbench.html(下图为JDBC驱动下载和JDBC URL查看页面) 卸载数据到Amazon S3 在卸载数据到S3之前一定要确保IAM权足够,否则如果您在运行 COPY、UNLOAD 或 CREATE LIBRARY 命令时收到错误消息 S3ServiceException: Access Denied,则您的集群对于 Amazon S3 没有适当的访问权限。如下: 创建 IAM 角色以允许 Amazon Redshift 集群访问 S3服务 step1:进入https://console.aws.amazon.com/iam/home#/roles,创建role。 step2:选择Redshift服务,并选择Redshift-Customizable step3:搜索策略S3,找到AmazonS3FullAccess,点击下一步。 step4:命名角色为redshiftunload。 step5:打开刚定义的role并复制角色ARN。(unload命令会用到) step6:进入Redshift集群,打开管理IAM角色 step7:选择刚定义的redshiftunload角色并应用更改。 执行unload命令卸载数据 以管道分隔符导出数据 以默认管道符号(|)的方式将数据卸载到对应的S3存储桶中,并以venue_为前缀进行存储,如下: unload ('select * from venue') to 's3://aws2oss/venue_' iam_role '<新建的redshiftunload角色对应的ARN>'; --parallel off; --连续卸载,UNLOAD 将一次写入一个文件,每个文件的大小最多为 6.2 GB 执行效果图如下: 进入Amazon S3对应的存储桶中可以查看到有两份文件,且以venue_为前缀的,可以打开文件查看下数据。 数据如下,以管道字符(|)分隔: 以指标符导出数据 要将相同的结果集卸载到制表符分隔的文件中,请发出下面的命令: unload ('select * from venue') to 's3://aws2oss/venue_' iam_role '<新建的redshiftunload角色对应的ARN>' delimiter as '\t'; 打开文件可以预览到数据文件如下: ----为了MaxCompute更方便的读取数据,我们采用以逗号(,)分隔-- unload ('select * from venue') to 's3://aws2oss/venue_' iam_role '<新建的redshiftunload角色对应的ARN>' delimiter as ',' NULL AS '0'; 更多关于unload的命令说明详见:https://docs.aws.amazon.com/zh_cn/redshift/latest/dg/r_UNLOAD.html Amazon S3无缝切换到OSS 在线迁移工具只支持同一个国家的数据源,针对不同国家数据源迁移建议用户采用OSS迁移工具,自己部署迁移服务并且购买专线来完成,详见:https://help.aliyun.com/document_detail/56990.html OSS提供了S3 API的兼容性,可以让您的数据从AWS S3无缝迁移到阿里云OSS上。从AWS S3迁移到OSS后,您仍然可以使用S3 API访问OSS。更多可以详见S3迁移教程。 背景信息 ① 执行在线迁移任务过程中,读取Amazon S3数据会产生公网流出流量费,该费用由Amazon方收取。② 在线迁移默认不支持跨境迁移数据,若有跨境数据迁移需求需要提交工单来申请配置任务的权限。 准备工作 Amazon S3前提工作 接下来以RAM子账号来演示Amazon S3数据迁移到Aliyun OSS上。 预估迁移数据,进入管控台中确认S3中有的存储量与文件数量。 创建迁移密钥,进入AWS IAM页面中创建用户并赋予AmazonS3ReadOnlyAccess权限。 添加用户-->访问类型(编程访问,AK信息)-->赋予AmazonS3ReadOnlyAccess权限-->记录AK信息。 step1:进入IAM,选择添加用户。![image.png] step2:新增用户并勾选创建AK。 step3:选择直接附加现有策略,并赋予AmazonS3ReadOnlyAccess权限。 step4:记录AK信息,在数据迁移中会用到。 Aliyun OSS前提工作 阿里云OSS相关操作,新创建bucket: 创建RAM子账号并授予OSS bucket的读写权限和在线迁移管理权限。 迁移实施 迁移会占用源端和目的端的网络资源;迁移需要检查源端和目的端文件,如果存在文件名相同且源端的最后更新时间少于目的端,会进行覆盖。 进入阿里云数据在线迁移控制台:https://mgw.console.aliyun.com/?spm=a2c4g.11186623.2.11.10fe1e02iYSAhv#/job?_k=6w2hbo,并以《Aliyun OSS前提工作》中新建的子账号登录。 进入数据迁移服务-数据地址-数据类型(其他),如下: 【创建源地址:】 具体配置项说明详见:https://help.aliyun.com/document_detail/95159.html【创建目标地址:】 具体配置项说明详见:https://help.aliyun.com/document_detail/95159.html 创建迁移任务 从左侧tab页面中找到迁移任务,并进入页面,点击创建迁移任务。![image.png] ---->OSS中的数据如下: MaxCompute直接加载OSS数据 授权 在查询OSS上数据之前,需要对将OSS的数据相关权限赋给MaxCompute的访问账号,授权详见授权文档。MaxCompute需要直接访问OSS的数据,前提需要将OSS的数据相关权限赋给MaxCompute的访问账号,您可通过以下方式授予权限: 当MaxCompute和OSS的owner是同一个账号时,可以直接登录阿里云账号后,点击此处完成一键授权。 若MaxCompute和OSS不是同一个账号,此处需由OSS账号登录进行授权,详见文档。 创建外部表 在DataWorks中创建外部表,如下图所示: 创建MaxCompute外部表DDL语句: CREATE EXTERNAL TABLE IF NOT EXISTS venue_external ( VENUEID bigint, VENUENAME string, VENUECITY string, VENUESTATE string, VENUESEATS bigint ) STORED BY 'com.aliyun.odps.CsvStorageHandler' -- (1) WITH SERDEPROPERTIES ( 'odps.properties.rolearn'='acs:ram::*****:role/aliyunodpsdefaultrole' ) -- (2) LOCATION 'oss://oss-cn-shanghai-internal.aliyuncs.com/redshift2odps/s3/'; -- (3)(4) com.aliyun.odps.CsvStorageHandler是内置的处理CSV格式文件的StorageHandler,它定义了如何读写CSV文件。您只需指明这个名字,相关逻辑已经由系统实现。如果用户在数据卸载到S3时候自定义了其他分隔符那么,MaxCompute也支持自定义分隔符的Handler,详见:https://help.aliyun.com/document_detail/45389.html 可以直接查询返回结果:select * from venue_external limit 10; DataWorks上执行的结果如下图所示: 创建内部表固化数据 如果后续还需要做复杂的查询且数据量特别大的情况下,建议将外部表转换为内部表,具体示意如下:create table if not exists venue as select * from venue_external;
使用split_size优化的ODPS SQL的场景 首先有两个大背景需要说明如下:说明1:split_size,设定一个map的最大数据输入量,单位M,默认256M。用户可以通过控制这个变量,从而达到对map端输入的控制。设置语句:set odps.sql.mapper.split.size=256。一般在调整这个设置时,往往是发现一个map instance处理的数据行数太多。 说明2:小文件越多,需要instance资源也越多,MaxCompute对单个Instance可以处理的小文件数限制为120个,如此造成浪费资源,影响整体的执行性能(文件的大小小于块Block 64M的文件)。 场景一:单记录数据存储太少 原始Logview Detail: 可以发现Job只调起一个Map Instance,供处理了156M的数据,但这些数据共有5千多万的记录(单记录平均3个byte),花费了25分钟。此外,从TimeLine看可以发现,整个Job耗费43分钟,map占用了超过60%的时间。故可对map进行优化。 优化手段:调小split_size为16M 优化之后的logview: 优化后,可以发现,Job调起了7个Map Instance,耗时4分钟;某一个Map处理了27M的数据,6百万记录。(这里可以看出set split_size只是向Job提出申请,单不会严格生效,Job还是会根据现有的资源情况等来调度Instance)因为Map的变多,Join和Reduce的instance也有增加。整个Job的执行时间也下降到7分钟。 场景二:用MapJoin实现笛卡尔积 原始logview: 可以发现,Job调起了4个Map,花费了3个小时没有跑完;查看详细Log,某一个Map因为笛卡尔的缘故,生成的数据量暴涨。综合考虑,因为该语句使用Mapjoin生成笛卡尔积,再筛选符合条件的记录,两件事情都由map一次性完成,故对map进行优化。 策略调低split_size优化后的logview:![] 优化后,可以看到,Job调度了38个map,单一map的生成数据量下降了,整体map阶段耗时也下降到37分钟。回头追朔这个问题的根源,主要是因为使用mapjoin笛卡尔积的方式来实现udf条件关联的join,导致数据量暴涨。故使用这种方式来优化,看起来并不能从根本解决问题,故我们需要考虑更好的方式来实现类似逻辑。
21分钟教会你分析MaxCompute账单 背景 阿里云大计算服务MaxCompute是一款商业化的大数据分析平台,其计算资源有预付费和后付费两种计费方式。并且产品每天按照project为维度进行计量计费(账单基本情况下会第二天6点前产出)。本文使用的为云上客户真实数据,故在下文中的截图都mask掉了。 关于MaxCompute计量计费说明,详见官方文档: 但是通常情况下,我们在数据开发阶段或者在上线前夕会发下账单有波动(通常情况下为增大), 其实用户首先可以通过自助的方式来分析账单波动情况,再倒逼自己的作业进行优化。阿里云费用中心就是一个很好的通道,阿里云所有商业化收费的产品都可以在其中下载费用明细。 获取账单信息 通常您需要使用主账号查看账单详情。如果您需要使用子账号查看账单信息,请首先参考费用中心RAM配置策略行子账号授权。 step1:使用主账号或者被授权的RAM子账号来登录阿里云管控台。step2:右上角进入费用中心。 step3:在费用中心-消费记录-消费明细中,选择产品和账单日期。 包年包月中的 后付费是指项目开通包年包月计算计费模式后,还产生的存储、下载对应的费用(存储、下载费用只有后付费)。 step4:为了方便批量分析数据,我们选择下载使用记录csv文件在本地分析。 下载csv文件如下,可以在本地打开进行分析。 --csv的表头 项目编号,计量信息编号,数据分类,存储(Byte),结束时间,SQL/交互式分析,读取量(Byte),SQL复杂度,公网上行流量(Byte),公网下行流量(Byte),MR/Spark作业计算(Core*Second),SQL读取量_访问OTS(Byte),SQL读取量_访问OSS(Byte),开始时间,计算资源规格,DataWorks调度任务ID 上传账单明细至MaxCompute 使用记录明细字段解释: 项目编号:当前账号下或子账号对应的主账号的MaxCompute project列表。 计量信息编号:其中会包含存储、计算、上传和下载的计费信息编号,SQL为instanceid,上传和下载为Tunnel sessionid。 数据分类:Storage(存储)、ComputationSql(计算)、UploadIn(内网上传)、UploadEx(外网上传)、DownloadIn(内网下载)、DownloadEx(外网下载)、spark(计算)、LightningQuery(计算)。按照计费规则其中只有红色为实际计费项目。 开始时间/结束时间:按照实际作业执行时间进行计量,只有Storage是按照每个小时取一次数据。 存储(Byte):每小时读取的存储量单位为Byte。 SQL 读取量(Byte):SQL计算项,每一次SQL执行时SQL的input数据量,单位为Byte。 SQL 复杂度(Byte):每次执行SQL的复杂度,为SQL计费因子之一。 公网上行流量(Byte),公网下行流量(Byte):分别为公网上传和下载的数据量,单位Byte。 MR作业计算(CoreSecond):MR作业的计算时单位为coresecond,需要转换为计算时hour。 SQL读取量_访问OTS(Byte),SQL读取量_访问OSS(Byte):外部表实施收费后的读取数据量,单位Byte。 计算资源规格:暂时为空。 DataWorks调度任务ID:通过DataWorks调度执行的节点ID,可以通过ID在运维中心中定位到具体某个节点。 ① 确认CSV文件数据,尤其是列分隔符等(推荐使用UE)。 数据以逗号分隔,且单元格值都带有双引号。 ② 数据预处理:替换掉文档所有双引号,以方便使用Tunnel等上传工具。 替换为不用填写。直接点击全部替换。 ③ 创建MaxCompute表,存储下载的消费明细。 DROP TABLE IF EXISTS maxcomputefee ; CREATE TABLE IF NOT EXISTS maxcomputefee ( projectid STRING COMMENT '项目编号' ,feeid STRING COMMENT '计费信息编号' ,type STRING COMMENT '数据分类,包括Storage、ComputationSQL、DownloadEx等' ,storage BIGINT COMMENT '存储量' ,endtime DATETIME COMMENT '结束时间' ,computationsqlinput BIGINT COMMENT '输入数据量' ,computationsqlcomplexity DOUBLE COMMENT 'sql复杂度' ,uploadex BIGINT COMMENT '公网上行流量Byte' ,download BIGINT COMMENT '公网下行流量Byte' ,cu_usage DOUBLE COMMENT 'MR计算时*second' ,input_ots BIGINT COMMENT '访问OTS的数据输入量' ,input_oss BIGINT COMMENT '访问OSS的数据输入量' ,starttime DATETIME COMMENT '开始时间' ,guige string COMMENT '计算资源规格' ,nodeid string COMMENT '对应DataWorks节点ID' ) ; ④ Tunnel上传数据,具体Tunnel的配置详见官方文档。odps@ sz_mc>tunnel upload /Users/yangyi/Desktop/ODPS_2019-01-12_2019-01-14.csv maxcomputefee -c "UTF-8" -h "true" -dfp "yyyy-MM-dd HH:mm:ss"; 当然用户也可以通过DataWorks数据导入的功能来进行,具体详见操作步骤。 ⑤ 验证数据。 通过SQL分析账单数据 1、分析SQL费用 云上客户使用MaxCompute,95%的用户通过SQL即可满足需求,SQL也在消费成长中占据了绝大部分。 SQL费用=一次SQL计算费用 = 计算输入数据量 × SQL复杂度 × 0.3元/GB --分析SQL消费,按照SQL进行排行 SELECT to_char(endtime,'yyyymmdd') as ds,feeid as instanceid ,projectid ,computationsqlcomplexity --复杂度 ,SUM((computationsqlinput / 1024 / 1024 / 1024)) as computationsqlinput --数据输入量GB ,SUM((computationsqlinput / 1024 / 1024 / 1024)) * computationsqlcomplexity * 0.3 AS sqlmoney FROM maxcomputefee WHERE TYPE = 'ComputationSql' AND to_char(endtime,'yyyymmdd') >= '20190112' GROUP BY to_char(endtime,'yyyymmdd'),feeid ,projectid ,computationsqlcomplexity ORDER BY sqlmoney DESC LIMIT 10000 ; --查询结果-- 根据此段SQL执行结果可以得到如下结论: 大作业可以优化的点:**是否可以减小数据读取量、降低复杂度来优化费用成本。 也可以按照ds字段(按照天)进行汇总,分析某个时间段内的SQL消费金额走势。比如利用本地excle或云上QuickBI等工具绘制折线图等方式,更直观的反应作业的趋势。 拿到具体的instanceid,在console或者DataWorks脚本中进行wait instanceid;查看具体作业和SQL。 随即在浏览器中打开logview的url地址(关于logview的介绍详见官方文档): 从logview中获取DataWorks节点名称:在logview中打开SourceXML可以查看到具体执行信息,如SKYNET_NODENAME表示DataWorks的节点名称(当然只有被调度系统执行的作业才有值,临时查询为空,如下图所示)。拿到节点名称可以快速的在DataWorks找到该节点进行优化或查看责任人。 2、分析作业增长趋势 一般情况下费用的增长背后其实是作业量的暴涨,可能是重复执行,也可能是调度属性配置的不是很合理。 --分析作业增长趋势 SELECT TO_CHAR(endtime,'yyyymmdd') AS ds ,projectid ,COUNT(*) AS tasknum FROM maxcomputefee WHERE TYPE = 'ComputationSql' AND TO_CHAR(endtime,'yyyymmdd') >= '20190112' GROUP BY TO_CHAR(endtime,'yyyymmdd') ,projectid ORDER BY tasknum DESC LIMIT 10000 ; --执行结果-- 从执行结果可以看出来12-14日提交到MaxCompute且执行成功的作业数的波动趋势。 3、分析存储费用 存储费用的计费规则相对来说比较复杂,因为下载到的明细是每个小时取一次数据。按照MaxCompute存储计费规则,会整体24小时求和然后平均之后的值再阶梯收费。具体详见官网。 --分析存储费用 SELECT t.ds ,t.projectid ,t.storage ,CASE WHEN t.storage < 0.5 THEN 0.01 WHEN t.storage >= 0.5 AND t.storage <= 100 THEN t.storage*0.0192 WHEN t.storage > 100 AND t.storage <= 1024 THEN (100*0.0192+(t.storage-100)*0.0096) WHEN t.storage > 1024 AND t.storage <= 10240 THEN (100*0.0192+(1024-100)*0.0096+(t.storage-1024)*0.0084) WHEN t.storage > 10240 AND t.storage <= 102400 THEN (100*0.0192+(1024-100)*0.0096+(10240-1024)*0.0084+(t.storage-10240)*0.0072) WHEN t.storage > 102400 AND t.storage <= 1048576 THEN (100*0.0192+(1024-100)*0.0096+(10240-1024)*0.0084+(102400-10240)*0.0072+(t.storage-102400)*0.006) END storage_fee FROM ( SELECT to_char(starttime,'yyyymmdd') as ds ,projectid ,SUM(storage/1024/1024/1024)/24 AS storage FROM maxcomputefee WHERE TYPE = 'Storage' and to_char(starttime,'yyyymmdd') >= '20190112' GROUP BY to_char(starttime,'yyyymmdd') ,projectid ) t ORDER BY storage_fee DESC ; --执行结果-- 根据计算结果可以分析得出结论: 存储在13日为最高有一个增长的过程,但是在14日是有降低。 存储优化,建议表设置生命周期,删除长期不使用的临时表等。 4、分析下载费用 对于公网或者跨Region的数据下载,MaxCompute将按照下载的数据大小进行计费。计费公式为:一次下载费用=下载数据量*0.8元/GB。 --分析下载消费明细 SELECT TO_CHAR(starttime,'yyyymmdd') AS ds ,projectid ,SUM((download/1024/1024/1024)*0.8) AS download_fee FROM maxcomputefee WHERE type = 'DownloadEx' AND TO_CHAR(starttime,'yyyymmdd') >= '20190112' GROUP BY TO_CHAR(starttime,'yyyymmdd') ,projectid ORDER BY download_fee DESC ; 按照执行结果也可以分析出某个时间段内的下载费用走势。另外可以通过tunnel show history查看具体历史信息,具体命令详见官方文档。 以下几种计算作业与SQL类似,按照官方计费文档编写SQL即可。 5、分析MapReduce作业消费 MR任务当日计算费用=当日总计算时*0.46元 --分析MR作业消费 SELECT TO_CHAR(starttime,'yyyymmdd') AS ds ,projectid ,(cu_usage/3600)*0.46 AS mr_fee FROM maxcomputefee WHERE type = 'MapReduce' AND TO_CHAR(starttime,'yyyymmdd') >= '20190112' GROUP BY TO_CHAR(starttime,'yyyymmdd') ,projectid ,cu_usage ORDER BY mr_fee DESC ; 6、分析外部表作业(OTS和OSS) SQL外部表功能计费规则:一次SQL计算费用=计算输入数据量×SQL复杂度×0.03元/GB --分析OTS外部表SQL作业消费 SELECT TO_CHAR(starttime,'yyyymmdd') AS ds ,projectid ,(input_ots/1024/1024/1024)*1*0.03 AS ots_fee FROM maxcomputefee WHERE type = 'ComputationSql' AND TO_CHAR(starttime,'yyyymmdd') >= '20190112' GROUP BY TO_CHAR(starttime,'yyyymmdd') ,projectid ,input_ots ORDER BY ots_fee DESC ; --分析OSS外部表SQL作业消费 SELECT TO_CHAR(starttime,'yyyymmdd') AS ds ,projectid ,(input_oss/1024/1024/1024)*1*0.03 AS ots_fee FROM maxcomputefee WHERE type = 'ComputationSql' AND TO_CHAR(starttime,'yyyymmdd') >= '20190112' GROUP BY TO_CHAR(starttime,'yyyymmdd') ,projectid ,input_oss ORDER BY ots_fee DESC ; 7、分析Lightning查询费用 一次Lightning查询费用 = 查询输入数据量 * 单价(0.03元/GB) SELECT to_char(endtime,'yyyymmdd') as ds,feeid as instanceid ,projectid ,computationsqlcomplexity ,SUM((computationsqlinput / 1024 / 1024 / 1024)) as computationsqlinput ,SUM((computationsqlinput / 1024 / 1024 / 1024)) * computationsqlcomplexity * 0.03 AS sqlmoney FROM maxcomputefee WHERE TYPE = 'LightningQuery' --AND to_char(endtime,'yyyymmdd') >= '20190112' GROUP BY to_char(endtime,'yyyymmdd'),feeid ,projectid ,computationsqlcomplexity ORDER BY sqlmoney DESC LIMIT 10000 ; 8、分析Spark计算费用 Spark任务当日计算费用 = 当日总计算时 * 0.66元(人民币) --分析MR作业消费 SELECT TO_CHAR(starttime,'yyyymmdd') AS ds ,projectid ,(cu_usage/3600)*0.66 AS mr_fee FROM maxcomputefee WHERE type = 'spark' AND TO_CHAR(starttime,'yyyymmdd') >= '20190112' GROUP BY TO_CHAR(starttime,'yyyymmdd') ,projectid ,cu_usage ORDER BY mr_fee DESC ; 总结 MaxCompute产品消费的增长(暴涨)往往背后都是由于作业量的大幅度提升,要优化自己的费用成本,首选要知道自己SQL等作业中存在什么问题,要优化具体哪一个SQL。本文期望能够给予大家一些帮助。更多关于费用成本优化的文章可以详见,云栖社区《帮助企业做好MaxCompute大数据平台成本优化的最佳实践》和《众安保险如果优化自己的MaxCompute费用成本实践》。
在DataWorks中实现指定资源被指定账户访问 背景 之前写过一篇文章是关于“DataWorks和MaxCompute内部权限体系的区别”有兴趣的朋友可以点击阅读查看详情。但是还是有些同学会问,我如何在DataWorks中实现我的具体某个Resource,Table还是UDF只能被我指定的用户所使用的权限管控。这个UDF可能涉及到数据的加解密算法,属于数据安全管控范围了。 常见方案 package方案,通过打包授权进行权限精细化管控。 DataWorks上新建角色(管理>MaxCompute高级配置>自定义用户角色)来进行高级管控。 Role policy方案,通过role policy来自定义role的权限集合。 可选方案 (1)package方案,通过打包授权进行权限精细化管控。package基本知识,通常是为了解决跨项目空间的共享数据及资源的用户授权问题。当通过package后会发现给予其DataWorks开发者角色后用户拥有了所有权限。不可控。 首先,普及大家熟知的DataWorks开发者角色的权限如下: 从权限配置上看明显不符合我们的要求,明显看出来其对project中的package、functions、resources和table默认有全部权限。A projects/sz_mc/packages/*: *A projects/sz_mc/registration/functions/*: *A projects/sz_mc/resources/*: *A projects/sz_mc/tables/*: * 其次,通过DataWorks添加了子账号并赋予了开发者角色,具体如下: 上述的普及应该让大家明白,通过打package和DataWorks默认的角色都不能够满足我们的需求。比如我将子账号RAM$yangyi.pt@aliyun-test.com:ramtest并给予开发者角色,那么他就默认拥有这个当前项目里所有Object的所有action权限,具体详见。 (2)DataWorks上新建角色(管理>MaxCompute高级配置>自定义用户角色)来进行高级管控。但是在DataWorks-MaxCompute高级配置中只能针对某个表/某个项目进行授权,不能对resource和udf进行授权。 (3)role policy方案,通过policy可以精细化的管理到具体用户针对具体资源的具体权限粒度,可以满足我们的场景需求。但是policy机制的官方文档一直没有公开,主要考虑到用户是否熟悉policy否则使用起来会造成一定的困扰和问题,耽误开发效率。 Role policy方案 为了安全起见,建议初学者找个测试项目来验证policy。以下操作都是通过MaxCompute console完成,具体详见:console配置。 ① 创建默认拒绝访问UDF角色 step1:创建一个role denyudfrole,如下:odps@ sz_mc>create role denyudfrole; step2:创建policy授权文件,如下: { "Version": "1", "Statement": [{ "Effect":"Deny", "Action":["odps:Read","odps:List"], "Resource":"acs:odps:*:projects/sz_mc/resources/getaddr.jar" }, { "Effect":"Deny", "Action":["odps:Read","odps:List"], "Resource":"acs:odps:*:projects/sz_mc/registration/functions/getregion" } ] } step3:设置和查看role policy。如下:odps@ sz_mc>put policy /Users/yangyi/Desktop/role_policy.json on role denyudfrole; step4:添加用户至role denyudfrole。odps@ sz_mc>grant denyudfrole to RAM$yangyi.pt@aliyun-test.com:ramtest; 至此我们验证下,以子账号RAM$yangyi.pt@aliyun-test.com:ramtest登录MaxCompute console。1、登录console确认角色。 2、show grants查看当前登录用户权限。 可以看出来,该RAM子账号有两个角色,一个是role_project_dev其实就是DataWorks默认的开发者角色,一个是我们刚自定义创建的denyudfrole。 3、验证自建UDF以及依赖的包的权限。 验证成功,该子账号在拥有了DataWorks开发者角色的前提下并没有自建UDF:getregion的读权限。但是离我们期望只能指定某个用户来访问该UDF还差最后一步。需要结合project policy来解决此需求。 配置project policy step1:编写policy。 { "Version": "1", "Statement": [{ "Effect":"Allow", "Principal":"RAM$yangyi.pt@aliyun-test.com:yangyitest", "Action":["odps:Read","odps:List","odps:Select"], "Resource":"acs:odps:*:projects/sz_mc/resources/getaddr.jar" }, { "Effect":"Allow", "Principal":"RAM$yangyi.pt@aliyun-test.com:yangyitest", "Action":["odps:Read","odps:List","odps:Select"], "Resource":"acs:odps:*:projects/sz_mc/registration/functions/getregion" }] } step2:设置和查看policy。odps@ sz_mc>put policy /Users/yangyi/Desktop/project_policy.json; 验证下: 跑一个SQL看看: 查看依赖的包: --->到此为止,我们完成了需求。指定项目下只有指定的RAM子账号能够访问指定的UDF和依赖的包。 总结 有些同学到这里可能清晰的认识了DataWorks和MaxCompute的安全体系,但是有些同学可能还比较晕。总结如下: 不想其访问具体资源的,在DataWorks中添加数据开发者权限后再在MaxCompute console上按照role policy配置为拒绝访问权限。 指定账户访问资源的,在DataWorks配置数据数据开发者权限后再再MaxCompute console上按照project policy配置为允许访问权限。 具体实例详见上述,可以满足我们的精细化管理需求。
MaxCompute/DataWorks权限问题排查建议 __前提:__MaxCompute与DataWorks为两个产品,在权限体系上既有交集又要一定的差别。在权限问题之前需了解两个产品独特的权限体系。 MaxCompute:计算引擎 MaxCompute底层计算引擎有自己的安全权限体系,包括ACL、Policy授权体系。具体可以了解:https://help.aliyun.com/document_detail/27924.html DataWorks:数据工场 DataWorks为MaxCompute上层的云数仓开发工具,拥有自身的权限模型外还支持底层MaxCompute底层数据授权体系。具体详见:https://help.aliyun.com/document_detail/92594.html 查看MaxCompute上的角色 通过MaxCompute Console命令list roles;可以看到角色体系,role_开头都为DataWorks基于MaxCompute封装的角色及权限体系。介绍如下: rolename 对应产品及权限名称 admin MaxCompute底层引擎默认admin角色 role_project_admin DataWorks项目管理员 role_project_deploy DataWorks部署角色 role_project_dev DataWorks开发角色 role_project_guest DataWorks访客角色 role_project_pe DataWorks运维角色 role_project_scheduler DataWorks生产代持账号 role_project_security DataWorks安全管理员 __admin:__MaxCompute计算引擎的默认admin角色,可以访问项目空间内的所有对象、对用户或角色进行管理、对用户或角色进行授权。与项目空间 Owner 相比,admin 角色不能将 admin 权限指派给用户,不能设定项目空间的安全配置,不能修改项目空间的鉴权模型,admin 角色所对应的权限不能被修改。一般情况下,如未修改过权限,一般情况下admin角色用户只有一个为project owner账号。 odps@ clouder_bi>describe role admin; [users] ALIYUN$***@aliyun-test.com Authorization Type: Admin MaxCompute project owner可以将admin角色授予其他子账号,用于进行MaxCompute底层的权限模型管理。 role_开头的角色也可以通过describe role 方式查看其角色所具备的权限点及角色里的用户列表。以开发者角色为例: odps@ clouder_bi>describe role role_project_dev; [users] RAM$yangyi.pt@aliyun-test.com:yangyitest Authorization Type: Policy A projects/clouder_bi: * A projects/clouder_bi/instances/*: * A projects/clouder_bi/jobs/*: * A projects/clouder_bi/offlinemodels/*: * A projects/clouder_bi/packages/*: * A projects/clouder_bi/registration/functions/*: * A projects/clouder_bi/resources/*: * A projects/clouder_bi/tables/*: * A projects/clouder_bi/volumes/*: * 排查问题建议: 在普及完两个产品的权限体系之外,更多的用户会遇到各种权限的疑问或者问题。通常可以通过如下方式来排查: 首先,查看当前用户或指定用户所拥有的权限。 show grants; --查看当前用户自己的访问权限 show grants for <username>; --查看指定用户的访问权限,仅由ProjectOwner和Admin才能有执行权限 。 show grants for RAM$主帐号:子帐号; 可以看到用户所具有的角色及相关权限点。 查看指定对象的授权列表,一般获取表到人。 show acl for <objectName> [on type <objectType>];--查看指定对象上的用户和角色授权列表 支持的objecTtype: PROJECT, TABLE, JOB, VOLUME, INSTANCE, RESOURCE, FUNCTION,PACKAGE,TOPOLOGY,MATRIX,XFLOW,OFFLINEMODEL,STREAMJOB 查看ACL是否生效(常常发生在授权之后返回OK,但是权限校验还是失败) show SecurityConfiguration;--查看项目空间的安全配置 除了通过命令行方式,也可以通过__++DataWorks>项目管理>MaxCompute高级配置++__里的ACL开关来确认是否打开。 Policy授权的查询 policy授权一般常见有两种,一个是项目级别的,一个是role级别的。 get policy;--获取项目级别的policy配置; get policy on role <rolename>;--获取指定的role policy设置。
MaxCompute 是一个支持多租户的统一大数据处理平台,不同的用户对数据安全需求不尽相同。为了满足不同租户对数据安全的灵活需求,MaxCompute 支持项目空间级别的安全配置,ProjectOwner 可以定制适合自己的外部账号支持和鉴权模型并且在某种程度上保障Project的数据安全。 通常情况下,常见的开发模式为__MaxCompute+DataWorks__方式,针对这种场景下数据安全方案如下: 一、禁止数据下载到本地 禁止数据流出或下载本地 方式①:数据保护机制也被称之为开启项目空间数据保护,可以通过MaxCompute console 开启服务端禁止数据流出: set projectProtection=true --设置ProjectProtection规则:数据只能流入,不能流出。 --默认时,ProjectProtection不会被设置,值为false。 方式②:那么更多开发者通过DataWorks进行数据分析,通常会屏显在IDE上并且可以下载结果,这种可以通过项目管理 > 项目配置中打开“在本项目中能下载select结果”,具体如下: 那么这种情况下,在DataWorks查询结果页面就不可以通过“下载”按钮进行下载数据到本地。 开启数据保护机制后的数据流出方法 在您的Project被设置了ProjectProtection之后,您可能很快就会遇到这样的需求:user1向您提出申请,她的确需要将某张表的数据导出您的项目空间。 而且经过您的审查之后,那张表也的确没有泄漏您关心的敏感数据。为了不影响user1的正常业务需要,MaxCompute为您提供了在ProjectProtection被设置之后的两种数据导出途径。 方式①:ProjectOwner设置ExceptionPolicy,针对已经开启项目数据保护的进行开例外。具体方式如下(需要通过MaxCompute console操作): SET ProjectProtection=true WITH EXCEPTION <policyFile> 这种policy不同于Policy授权(尽管它与Policy授权语法完全一样),它只是对项目空间保护机制的例外情况的一种描述,即所有符合policy中所描述的访问情形都可以打破ProjectProtection规则。>>>policy详细文档 { "Version": "1", "Statement": [{ "Effect":"Allow", "Principal":"ALIYUN$Alice@aliyun.com", "Action":["odps:Select"], "Resource":"acs:odps:*:projects/alipay/tables/table_test", "Condition":{ "StringEquals": { "odps:TaskType":["DT", "SQL"] } } }] } ProjectProtection是一种数据流向的控制,而不是访问控制。只有在用户能访问数据的前提下,控制数据流向才是有意义的。 *** 另外,可以通过show grants [for <username>] [on type <objectType>] 查看某用户权限,查看是否加例外成功。 方法②:设置TrustedProject,若当前项目空间处于受保护状态,如果将数据流出的目标空间设置为当前空间的TrustedProject,那么向目标项目空间的数据流向将不会被视为触犯ProjectProtection规则。可以通过如下命令方式进行设置(需通过MaxCompute console进行): list trustedprojects; --查看当前project中的所有TrustedProjects add trustedproject <projectname>; --在当前project中添加一个TrustedProject remove trustedproject <projectname>; --在当前project中移除一个TrustedProject 二、IP白名单控制 MaxCompute支持Project级别的IP白名单。 设置IP白名单后,只有白名单列表中的IP(console或者SDK所在的出口IP)能够访问这个Project。 设置IP白名单后,您需要等待五分钟后才会生效。 切记在设置白名单的时候,加上自己当前机器IP,以免把自己屏蔽。 setproject odps.security.ip.whitelist=101.132.236.134,100.116.0.0/16,101.132.236.134-101.132.236.144; 白名单中IP列表的表示格式有三种。 单纯IP:例如101.132.236.134。 子网掩码:100.116.0.0/16。 网段:101.132.236.134-101.132.236.144。 具体详细教程可以参考,>>>>IP白名单控制。 更精细化的管理 当然MaxCompute Policy机制也可以实现控制某个用户/或者角色的用户从具体IP地址来访问具体资源(表、UDF、资源)等。Policy样例: { "Version": "1", "Statement": [{ "Effect":"Allow", "Principal":"ALIYUN$alice@aliyun.com", "Action":["odps:CreateTable","odps:CreateInstance","odps:List"], "Resource":"acs:odps:*:projects/prj1", "Condition":{ "DateLessThan": { "acs:CurrentTime":"2013-11-11T23:59:59Z" }, "IpAddress": { "acs:SourceIp":"10.32.180.0/23" } } }, { "Effect":"Deny", "Principal":"ALIYUN$alice@aliyun.com", "Action":"odps:Drop", "Resource":"acs:odps:*:projects/prj1/tables/*" }] } 授权用户alice@aliyun.com只能在"2013-11-11T23:59:59Z"这个时间点之前、只能从“10.32.180.0/23”这个IP段提交请求, 只允许在项目空间prj1中执行CreateInstance, CreateTable和 List操作,禁止删除prj1下的任何table。具体可以参考Policy文档。 三、数据保护伞(数据脱敏) 数据保护伞为DataWorks的一个数据安全模块,具体可以通过点击进入进行了解,其包括数据脱敏、安全审计等。https://help.aliyun.com/document_detail/86320.html 可以针对敏感数据在DataWorks屏显进行加**显示,如下图所示: 注意:数据保护伞是DataWorks的一个模块,如果使用了数据保护伞且进行了数据脱敏,但是通过console进行tunnel download还是未脱敏状态。 四、细粒度的权限管控 1、列级别LabelSecurity访问控制项目空间中的LabelSecurity安全机制默认是关闭的,ProjectOwner可以自行开启。 【应用场景】场景说明:user_profile是某项目空间中的一张含有敏感数据的表,它包含有100列,其中有5列包含敏感数据:id_card, credit_card, mobile, user_addr, birthday. 当前的DAC机制中已经授权了所有用户对该表的Select操作。ProjectOwner希望除了Admin之外,所有用户都不允许访问那5列敏感数据。 ProjectOwner操作步骤如下: set LabelSecurity=true; --开启LabelSecurity机制 set label 2 to table user_profile(mobile, user_addr, birthday); --将指定列的敏感等级设置为2 set label 3 to table user_profile(id_card, credit_card); --将指定列的敏感等级设置为3 Alice是项目空间中的一员,由于业务需要,她要申请访问user_profile的mobile列的数据,需要访问1周时间。项目空间管理员操作步骤如下: GRANT LABEL 2 ON TABLE user_profile TO USER alice WITH EXP 7; 更多关于列级别安全控制文档:https://help.aliyun.com/document_detail/34604.html 2、Role Policy管理自定义Role很多用户会因为DataWorks内置的数据开发、运维、管理员等角色不能满足其个性化需求,会基于ACL创建符合自己业务逻辑的角色如数据分析师、ETL开发等,基于这些role如何进行复杂的授权,如批量授予ods_开头的表权限,但限制条件的,以及Deny类型的角色,这个时候就需要结合Role policy来精细化管理。 一次操作对一组对象进行授权,如所有的函数、所有以”taobao”开头的表。 带限制条件的授权,如授权只会在指定的时段内才会生效、当请求者从指定的IP地址发起请求时授权才会生效、或者只允许用户使用SQL(而不允许其它类型的Task)来访问某张表。 方式①:Policy操作代码如下所示: get policy --读取项目空间的Policy put policy <policyFile> --设置(覆盖)项目空间的Policy get policy on role <roleName> --读取项目空间中某个角色的Policy put policy <policyFile> on role <roleName> --设置(覆盖)项目空间中某个角色的Policy 更多关于Policy的介绍以及操作详见文档:http://www.aiwanba.net/plugin/odps-doc/prddoc/odps_security/odps_sec_authorization_dac.html 方式②:通过DataWorks-项目管理-MaxCompute配置-自定义用户角色中进行。 创建步骤: 【新增角色】点击新建角色,填写角色名称,勾选需要加入该角色的账号(子账号用户)。 【角色授权】包括两种一个是表一个是项目。以表为例: 选择需要授权的表,并赋予相应的操作权限,如下所示针对具体表赋予具体权限。 说明:上述两种方式最大的区别就是,role policy可以进行批量表授权,如以taobao_开头的。但是DataWorks大的方式需要逐个表来进行筛选并配置权限。 四、JDBC 2.4(数据安全加固) MaxCompute JDBC 2.4针对数据安全加固做了一定的挑战,具体JDBC地址:https://github.com/aliyun/aliyun-odps-jdbc/releases 在JDBC中使用数据安全加固方案具体步骤: 下载JDBC 2.4(建议) 配置jdbc url,通常如下制定Tunnel endpoint地址,如 jdbc:odps:http://service.cn.maxcompute.aliyun-inc.com/api?tunnelEndpoint=http://dt.cn-shanghai.maxcompute.aliyun-inc.com。 具体region对应的MaxCompute Endpoint和Tunnel Endpoint可以参考文档:https://help.aliyun.com/document_detail/34951.html 开启项目保护SET ProjectProtection=true,不需要加exception例外,具体可以想见项目保护机制章节。 打开控制返回数据条数:setproject READ_TABLE_MAX_ROW=1000; 基于JDBC的工具进行查询,数据返回条数会控制在1000条以内。 说明:如果使用的版本小于JDBC 2.4,并且开启了项目保护那么通过JDBC方式会直接报错(无权限)。
背景: 在数据化营销时代,数据的价值越发显得更为珍贵。那如何让自己的数据发挥价值,也就是说如何让公司沉睡的数据能够驱动业务发展给公司带来商业价值?在营销里面我们都谈精准营销,谈用户画像,那用户画像到底如何构建,用户的标签如何开发?本示例给与最简单的demo,那个大家清楚认识基于MaxCompute如何构建企业用户标签。 数据说明: 基站位置信息:s_user_cell_log CREATE TABLE s_user_cell_log ( user_id bigint COMMENT '用户id', cell string COMMENT '基站id', phone_type string COMMENT '接入设备类型', latitude double COMMENT '维度', longitude double COMMENT '经度', log_time datetime COMMENT '日志时间', app_type bigint COMMENT 'app类型' ) COMMENT '基站位置信息' PARTITIONED BY ( ds string ) LIFECYCLE 90; 设备位置信息:s_user_device_log CREATE TABLE s_user_device_log ( user_id bigint COMMENT '用户id', imei string COMMENT 'imei', latitude double COMMENT '维度', longitude double COMMENT '经度', log_time datetime COMMENT '日志时间', app_type bigint COMMENT 'app类型' ) COMMENT '设备位置信息' PARTITIONED BY ( ds string ) LIFECYCLE 90; 网页日志信息:s_user_web_log CREATE TABLE s_user_web_log ( user_id bigint COMMENT '用户id', cookie string COMMENT 'cookieid', ip string COMMENT 'ip', url string COMMENT 'url', log_time datetime COMMENT '日志时间', app_name string COMMENT 'app类型' ) COMMENT '网页日志信息' PARTITIONED BY ( ds string ) LIFECYCLE 90; 计算逻辑: 通过基站信息、手机设备位置信息以及网页日志信息,通过一定的计算逻辑来推演用户地址的基础信息:dwd_log_addr_d CREATE TABLE dwd_log_addr_d ( user_id bigint COMMENT '用户id', prov_id bigint COMMENT '省份id', city_id bigint COMMENT '城市id', dist_id bigint COMMENT '区域id', bizdate string COMMENT '日期' ) COMMENT '用户地址基础表' PARTITIONED BY ( ds string ) LIFECYCLE 90; dwd_log_addr_d表的ODPS SQL处理逻辑如下: 其中ip2region和lbs2region两个函数都需要用户自己来编写UDF来实现。 insert overwrite table dwd_log_addr_d partition (ds='${bdp.system.bizdate}') select user_id ,prov_id ,city_id ,dist_id from (select user_id ,ip2region(ip,'province') as prov_id ,ip2region(ip,'city') as city_id ,ip2region(ip,'district') as dist_id from s_user_web_log --用户访问网页日志信息 where ds='${bdp.system.bizdate}' union all select user_id ,lbs2region(latitude,longitude,'province') as prov_id ,lbs2region(latitude,longitude,'city') as city_id ,lbs2region(latitude,longitude,'district') as dist_id from s_user_cell_log --基站信息 where ds='${bdp.system.bizdate}' union all select user_id ,lbs2region(latitude,longitude,'province') as prov_id ,lbs2region(latitude,longitude,,'city') as city_id ,lbs2region(latitude,longitude,,'district') as dist_id from s_user_device_log --用户手机位置信息 where ds='${bdp.system.bizdate}' ) a group by user_id ,prov_id ,city_id ,dist_id ; 根据ODPS SQL(近90天内出现最多的位置来断定常驻地信息)来计算常驻地信息表dm_tag_addr_city insert overwrite table dm_tag_addr_city partition (ds='${bdp.system.bizdate}') select user_id, city_id as addr_city from ( select user_id, city_id, ROW_NUMBER(partition by user_id order by date_cnt desc ) as rn from ( select user_id, city_id, count(distinct dt) as date_cnt from dwd_log_addr_d where ds<='${bdp.system.bizdate}' and ds>'${bizdate_90}' ) t0 ) t1 where t1.rn=1; --调度参数说明 bizdate_90=${yyyymmdd-90} 最终我们的开发好的标签要被业务系统所使用,通常情况下我们会同步至业务数据库如RDS,但在大数据时代,随着数据标签的海量增长,往往在标签的查询效率上要求更过,在本实例中,我们将用户标签数据同步至分析型数据库AnalyticDB中。支持毫秒级针对万亿级数据进行即时的多维分析透视和业务探索。 如何将MaxCompute数据同步至AnalyticDB?
背景信息: 在数据仓库的数据模型设计过程中,经常会遇到这样的需求: 数据量比较大; 表中的部分字段会被update,如用户的地址,产品的描述信息,订单的状态、手机号码等等; 需要查看某一个时间点或者时间段的历史快照信息。(比如,查看某一个订单在历史某一个时间点的状态,比如,查看某一个用户在过去某一段时间内,更新过几次等等) 变化的比例和频率不是很大,比如,总共有1000万的会员,每天新增和发生变化的有10万左右;如果对这边表每天都保留一份全量,那么每次全量中会保存很多不变的信息,对存储是极大的浪费; 综上所述:引入'拉链历史表',既能满足反应数据的历史状态,又可以最大程度的节省存储。 (备注:在阿里巴巴内部很大程度上是基于存储换计算来提供开发的效率及易用性,因为在当今,存储的成本远低于CPU和内存。因此在阿里巴巴内部会采用快照的方式将每日的全量数据进行快照,同时也会通过极限存储的方式,压缩率高,在合适的场景下,约能压缩为原始数据的1/30。) Demo数据 以下只是demo如何在MaxCompute中实现拉链表,所以是基于一些假设: 同一天中同一订单只有一个状态发生; 基于20150821及之前的数据并没有同一个订单有两个状态的最简单场景模拟; 且数据源在阿里云RDS for Mysql中。且表明为orders。 20150821以及之前的历史订单数据: 订单ID 创建时间 修改时间 状态 1 20150818 20150818 创建 2 20150818 20150818 创建 3 20150819 20150821 支付 4 20150819 20150821 完成 5 20150819 20150820 支付 6 20150820 20150820 创建 7 20150820 20150821 支付 8 20150821 20150821 创建 20150822订单数据: 订单ID 创建时间 修改时间 状态 1 20150818 20150822 支付 2 20150818 20150822 完成 6 20150820 20150822 支付 8 20150821 20150822 支付 9 20150822 20150822 创建 10 20150822 20150822 支付 20150823的订单数据: 订单ID 创建时间 修改时间 状态 1 20150818 20150823 完成 3 20150819 20150823 完成 5 20150819 20150823 完成 8 20150821 20150823 完成 11 20150823 20150823 创建 12 20150823 20150823 创建 13 20150823 20150823 支付 创建MaxCompute表 --ODS层:订单的增量数据表,按天分区,存放每天的增量数据 CREATE TABLE ods_orders_inc_d ( orderid BIGINT ,createtime STRING ,modifiedtime STRING ,o_status STRING ) PARTITIONED BY (dt STRING) LIFECYCLE 7; --DW层:历史数据拉链表,存放订单的历史状态数据 CREATE TABLE dw_orders_his_d ( orderid BIGINT COMMENT '订单ID' ,createtime STRING COMMENT '订单创建时间' ,modifiedtime STRING COMMENT '订单修改时间' ,o_status STRING COMMENT '订单修改时间' ,dw_start_date STRING COMMENT '订单生命周期开始时间' ,dw_end_date STRING COMMENT '订单生命周期结束时间' ); 实现思路 全量初始化:将2015-08-21及以前的全量历史数据通过全量方式同步至ODS并刷进DW层。 增量更新:将2015-08-22、2015-08-23的全天增量数据以增量方式刷入下游数据。 全量初始化 创建节点任务:数据同步 选择调度类型:手动调度 配置数据同步任务:Mysql:Orders-->ODPS:ods_orders_inc_d where条件配置:modifiedtime <= '20150821' 分区值dt=20150821 提交调度系统,待数据同步任务执行成功后,再将ODS数据刷入DW。 创建SQL脚本: INSERT overwrite TABLE dw_orders_his_d SELECT orderid,createtime,modifiedtime,o_status,createtime AS dw_start_date,'99991231' AS dw_end_date FROM ods_orders_inc_d WHERE dt = '20150821'; 数据如下: 订单ID 创建时间 修改时间 状态 start_date end_date 1 20150818 20150818 创建 20150818 99991231 2 20150818 20150818 创建 20150818 99991231 3 20150819 20150821 支付 20150819 99991231 4 20150819 20150821 完成 20150819 99991231 5 20150819 20150820 支付 20150819 99991231 6 20150820 20150820 创建 20150820 99991231 7 20150820 20150821 支付 20150820 99991231 8 20150821 20150821 创建 20150821 99991231 通过以上步骤可以将2015-08-21及以前的历史全量数据一次性刷入DW和ODS中。 增量抽取并生成拉链表 创建工作流任务并选择周期性调度。 依次拖入数据同步节点任务和SQL任务。 在数据同步任务中where条件配置为:modifiedtime=${bdp.system.bizdate} 目标表ods_orders_inc_d分区配置为dt=${bdp.system.bizdate} 配置SQL节点,且为数据同步节点的下游节点。 --通过DW历史数据和ODS增量数据刷新DW表 insert overwrite table dw_orders_his_d SELECT a0.orderid, a0.createtime, a0.modifiedtime, a0.o_status, a0.dw_start_date, a0.dw_end_date FROM ( -- 对orderid进行开窗然后按照生命周期结束时间倒序排,支持重跑 SELECT a1.orderid, a1.createtime, a1.modifiedtime, a1.o_status, a1.dw_start_date, a1.dw_end_date , ROW_NUMBER() OVER (distribute BY a1.orderid,a1.createtime, a1.modifiedtime,a1.o_status sort BY a1.dw_end_date DESC) AS nums FROM ( -- 用历史数据与增量22日的数据进行匹配,当发现在22日新增数据中存在且end_date > 当前日期的就表示数据状态发生过变化,然后修改生命周期 -- 修改昨日已经生命截止的数据并union最新增量数据到DW SELECT a.orderid, a.createtime, a.modifiedtime, a.o_status, a.dw_start_date , CASE WHEN b.orderid IS NOT NULL AND a.dw_end_date > ${bdp.system.bizdate} THEN ${yesterday} ELSE a.dw_end_date END AS dw_end_date FROM dw_orders_his_d a LEFT OUTER JOIN ( SELECT * FROM ods_orders_inc_d WHERE dt = ${bdp.system.bizdate} ) b ON a.orderid = b.orderid UNION ALL --2015-08-22的增量数据刷新到DW SELECT orderid, createtime, modifiedtime, o_status, modifiedtime AS dw_start_date , '99991231' AS dw_end_date FROM ods_orders_inc_d WHERE dt = ${bdp.system.bizdate} ) a1 ) a0 -- 开窗口后对某个订单中生命周期为'9999-12-31'的取值并写入,防止重跑数据情况。 WHERE a0.nums = 1 order by a0.orderid,a0.dw_start_date; 备注:测试运行的时候,选择业务日期为20150822。也可以通过补数据方式,直接把20150822和20150823两天的增量数据刷入DW中。上面SQL中${yesterday}为自定义变量,其赋值为${yyyymmdd-1} 通过如上方式将20150822的增量数据刷入DW,如下所示: 订单ID 创建时间 修改时间 状态 start_date end_date 1 20150818 20150818 创建 20150818 20150821 1 20150818 20150822 支付 20150822 99991231 2 20150818 20150818 创建 20150818 20150821 2 20150818 20150822 完成 20150822 99991231 3 20150819 20150821 支付 20150819 99991231 4 20150819 20150821 完成 20150819 99991231 5 20150819 20150820 支付 20150819 99991231 6 20150820 20150820 创建 20150820 20150821 6 20150820 20150822 支付 20150822 99991231 7 20150820 20150821 支付 20150820 99991231 8 20150821 20150821 创建 20150821 20150821 8 20150821 20150822 支付 20150822 99991231 9 20150822 20150822 创建 20150822 99991231 10 20150822 20150822 支付 20150822 99991231 通过同样的方式将2015-08-23日的数据增量输入DW,其结果为: 订单ID 创建时间 修改时间 状态 start_date end_date 1 20150818 20150818 创建 20150818 20150821 1 20150818 20150822 支付 20150822 20150822 1 20150818 20150823 完成 20150823 99991231 2 20150818 20150818 创建 20150818 20150821 2 20150818 20150822 完成 20150822 99991231 3 20150819 20150821 支付 20150819 20150822 3 20150819 20150823 完成 20150823 99991231 4 20150819 20150821 完成 20150819 99991231 5 20150819 20150820 支付 20150819 20150822 5 20150819 20150823 完成 20150823 99991231 6 20150820 20150820 创建 20150820 20150821 6 20150820 20150822 支付 20150822 99991231 7 20150820 20150821 支付 20150820 99991231 8 20150821 20150821 创建 20150821 20150821 8 20150821 20150822 支付 20150822 20150822 8 20150821 20150823 完成 20150823 99991231 9 20150822 20150822 创建 20150822 99991231 10 20150822 20150822 支付 20150822 99991231 11 20150823 20150823 创建 20150823 99991231 12 20150823 20150823 创建 20150823 99991231 13 20150823 20150823 支付 20150823 99991231 如何使用拉链表 查看某一天的全量历史快照数据。 SELECT * FROM dw_orders_his_d WHERE dw_start_date <= '20150822' AND dw_end_date >= '20150822' ORDER BY orderid LIMIT 10000; 取一段时间的变化记录集合,如在20150822-20150823变化的记录。 SELECT * FROM dw_orders_his_d WHERE dw_start_date <= '20150823' AND dw_end_date >= '20150822' ORDER BY orderid LIMIT 10000; 查看某一订单历史变化情况。 SELECT * FROM dw_orders_his_d WHERE orderid = 8 ORDER BY dw_start_date; 取最新的数据。 SELECT * FROM dw_orders_his_d WHERE dw_end_date = '99991231' 关于基于历史拉链表回滚某一天或一段时间内的数据,还是一个相对比较复杂的话题,这个可以下载再谈。
信息摘要: MaxCompute推出PyODPS 0.7.15版本,提升开发体验。适用客户: Python开发者/数据分析师版本/规格功能: PyODPS 0.7.15较与之前版本新增、优化和修复了相关功能,并提升了开发者的体验与效率: 1、在 Python 3.6版本上,开发者可以直接使用 DataFrame 自定义函数了; 2、修复 Python 3.5 版本上,DataFrame 自定义函数可能会导致错误的问题; 3、支持Xflow 运行时可以设置运行参数; 4、从 pandas DataFrame 创建 PyODPS DataFrame 时,as_type 参数可以指定组合类型(如 list 或者 dict 类型); 5、修复其他BUG。产品文档: https://help.aliyun.com/document_detail/34615.html
实验背景介绍 了解更多2017云栖大会·北京峰会 TechInsight & Workshop. 本手册为云栖大会Workshop《云数据·大计算:快速搭建互联网在线运营分析平台》的《数据处理:数据建模与加工》篇而准备。主要阐述在使用DataWorks/MaxCompute过程中如何直读TableStore中的日志数据并进行加工、用户画像,学员可以根据本实验手册,去学习如何创建外部表、编写SQL。 实验涉及大数据产品 大数据计算服务 MaxCompute DataWorks DataWorks 实验环境准备 必备条件: 开通大数据计算服务MaxCompute 创建DataWorks项目空间 进入DataWorks项目 确保阿里云账号处于登录状态。 step1:点击进入DataWorks/MaxCompute管理控制台,选择华北2 Region,点击已经创建的项目空间名称,进入工作区。 新建数据表 本示例通过新建脚本文件的方式来创建外部表和内部表两大部分。MaxCompute计算服务访问 TableStore 数据需要有一个安全的授权通道。在这个问题上,MaxCompute结合了阿里云的访问控制服务(RAM)和令牌服务(STS)来实现对数据的安全访问。 STS模式授权 当MaxCompute和TableStore的Owner是同一个账号时,登录阿里云账号后 单击此处完成一键授权。 1.创建外部表ots_user_trace_log表 step1:点击数据开发,进入数据开发首页中点击新建脚本。 step2:配置文件名称为create_table_ddl,类型选择为ODPS SQL,点击提交。 step3:编写DDL创建表语句。 DDL建表语句如下: DROP TABLE IF EXISTS ots_user_trace_log; CREATE EXTERNAL TABLE IF NOT EXISTS ots_user_trace_log ( md5 STRING COMMENT '用户uid的md5值前8位' ,uid STRING COMMENT '用户uid' ,ts BIGINT COMMENT '用户操作时间戳' ,ip STRING COMMENT 'ip地址' ,status BIGINT COMMENT '服务器返回状态码' ,bytes BIGINT COMMENT '返回给客户端的字节数' ,device STRING COMMENT '终端型号' ,system STRING COMMENT '系统版本ios xxx/android xxx' ,customize_event STRING COMMENT '自定义事件:登录/退出/购买/注册/点击/后台/切换用户/浏览' ,use_time BIGINT COMMENT 'APP单次使用时长,当事件为退出、后台、切换用户时有该项' ,customize_event_content STRING COMMENT '用户关注内容信息,在customize_event为浏览和评论时 包含该列' ) STORED BY 'com.aliyun.odps.TableStoreStorageHandler' WITH SERDEPROPERTIES ( --'odps.properties.rolearn'='acs:ram::1604337383174619:role/aliyunodpsroleforyixiu', 'tablestore.columns.mapping'=':md5,:uid,:ts, ip,status,bytes,device,system,customize_event,use_time,customize_event_content', 'tablestore.table.name'='user_trace_log' ) LOCATION 'tablestore://<自己的TableStore实例名称>.cn-beijing.ots-internal.aliyuncs.com' ; LOCATION中的实例访问地址可以在上一实验中的TableStore管控台>实例列表>管理>实例详情 中获取,进入TableStore管控台。 弹出关于SQL费用预估的弹窗,在本workshop中可以忽略。 step4:选择需要执行的SQL语句,点击运行,直至日志信息返回成功表示表创建成功。 step4:可以使用desc语法来确认创建表是否成功。 step5:点击保存,保存编写的SQL建表语句。 2.新建ods_user_trace_log表 创建表方法同上,本小节附建表语句: DROP TABLE IF EXISTS ods_user_trace_log; CREATE TABLE IF NOT EXISTS ods_user_trace_log ( md5 STRING COMMENT '用户uid的md5值前8位', uid STRING COMMENT '用户uid', ts BIGINT COMMENT '用户操作时间戳', ip STRING COMMENT 'ip地址', status BIGINT COMMENT '服务器返回状态码', bytes BIGINT COMMENT '返回给客户端的字节数', device STRING COMMENT '终端型号', system STRING COMMENT '系统版本ios xxx/android xxx', customize_event STRING COMMENT '自定义事件:登录/退出/购买/注册/点击/后台/切换用户/浏览', use_time BIGINT COMMENT 'APP单次使用时长,当事件为退出、后台、切换用户时有该项', customize_event_content STRING COMMENT '用户关注内容信息,在customize_event为浏览和评论时 包含该列' ) PARTITIONED BY ( dt STRING ); 3.新建dw_user_trace_log表 创建表方法同上,本小节附建表语句: DROP TABLE IF EXISTS dw_user_trace_log; CREATE TABLE IF NOT EXISTS dw_user_trace_log ( uid STRING COMMENT '用户uid', region STRING COMMENT '地域,根据ip得到', device_brand string comment '设备品牌', device STRING COMMENT '终端型号', system_type STRING COMMENT '系统类型,Android、IOS、ipad、Windows_phone', customize_event STRING COMMENT '自定义事件:登录/退出/购买/注册/点击/后台/切换用户/浏览', use_time BIGINT COMMENT 'APP单次使用时长,当事件为退出、后台、切换用户时有该项', customize_event_content STRING COMMENT '用户关注内容信息,在customize_event为浏览和评论时 包含该列' ) PARTITIONED BY ( dt STRING ); 4.新建rpt_user_trace_log表 创建表方法同上,本小节附建表语句: DROP TABLE IF EXISTS rpt_user_trace_log; CREATE TABLE IF NOT EXISTS rpt_user_trace_log ( country STRING COMMENT '国家', province STRING COMMENT '省份', city STRING COMMENT '城市', device_brand string comment '设备品牌', device STRING COMMENT '终端型号', system_type STRING COMMENT '系统类型,Android、IOS、ipad、Windows_phone', customize_event STRING COMMENT '自定义事件:登录/退出/购买/注册/点击/后台/切换用户/浏览', use_time BIGINT COMMENT 'APP单次使用时长,当事件为退出、后台、切换用户时有该项', customize_event_content STRING COMMENT '用户关注内容信息,在customize_event为浏览和评论时 包含该列', pv bigint comment '浏览量', uv bigint comment '独立访客' ) PARTITIONED BY ( dt STRING ); 上述三张表创建成功后,保存脚本文件。 工作流设计 step1:点击新建 > 新建任务。 step2:在新建任务弹出框中,选择任务类型工作流任务。 向画布中拖入三个ODPS SQL节点,依次命名为ods_user_trace_log、dw_user_trace_log、rpt_user_trace_log,并配置依赖关系如下: 添加资源并创建自定义函数 将ip地址转化为地域的自定义函数,有兴趣同学可以点击查看详情。 step1:点击下载getaddr.jar和ip.dat. step2:切换至资源管理tab页,点击上传按钮,分别将上述两个资源文件进行上传。 step3:点击选择文件,选择已经下载到本地的getaddr.jar。 step4:点击提交。 ip.dat文件的上传方法同上,只是在选择类型为file。 step5:切换至函数管理tab,点击创建函数按钮。 step6:资源选择getaddr.jar和ip.dat,其他配置项如下所示。 配置项说明如下: 函数名:getregion 类名:odps.test.GetAddr 资源:getaddr.jar和ip.dat step7:点击提交。 配置ODPS SQL节点 1)配置ods_user_trace_log节点: step1:双击ods_user_trace_log节点,进入节点配置界面,编写处理逻辑。 附SQL逻辑如下: insert overwrite table ods_user_trace_log partition (dt=${bdp.system.bizdate}) select md5, uid , ts, ip, status, bytes, device, system, customize_event, use_time, customize_event_content from ots_user_trace_log where to_char(FROM_UNIXTIME(ts),'yyyymmdd')=${bdp.system.bizdate}; step2:点击保存。 step3:点击返回,返回至工作流开发面板。 2)配置dw_user_trace_log节点: step1:双击dw_user_trace_log节点,进入节点配置界面,编写处理逻辑。 附SQL语句如下: INSERT OVERWRITE TABLE dw_user_trace_log PARTITION (dt=${bdp.system.bizdate}) SELECT uid, getregion(ip) AS region , CASE WHEN TOLOWER(device) RLIKE 'xiaomi' THEN 'xiaomi' WHEN TOLOWER(device) RLIKE 'meizu' THEN 'meizu' WHEN TOLOWER(device) RLIKE 'huawei' THEN 'huawei' WHEN TOLOWER(device) RLIKE 'iphone' THEN 'iphone' WHEN TOLOWER(device) RLIKE 'vivo' THEN 'vivo' WHEN TOLOWER(device) RLIKE 'honor' THEN 'honor' WHEN TOLOWER(device) RLIKE 'samsung' THEN 'samsung' WHEN TOLOWER(device) RLIKE 'leeco' THEN 'leeco' WHEN TOLOWER(device) RLIKE 'ipad' THEN 'ipad' ELSE 'unknown' END AS device_brand, device , CASE WHEN TOLOWER(system) RLIKE 'android' THEN 'android' WHEN TOLOWER(system) RLIKE 'ios' THEN 'ios' ELSE 'unknown' END AS system_type, customize_event, use_time, customize_event_content FROM ods_user_trace_log WHERE dt = ${bdp.system.bizdate}; step2:点击保存。 step3:点击返回,返回至工作流开发面板。 配置rpt_user_trace_log节点 step1:双击进入rpt_user_trace_log节点进入配置界面。 附SQL代码如下: INSERT OVERWRITE TABLE rpt_user_trace_log PARTITION (dt=${bdp.system.bizdate}) SELECT split_part(split_part(region, ',', 1),'[',2) AS country , trim(split_part(region, ',', 2)) AS province , trim(split_part(region, ',', 3)) AS city , MAX(device_brand), MAX(device) , MAX(system_type), MAX(customize_event) , FLOOR(AVG(use_time / 60)) , MAX(customize_event_content), COUNT(uid) AS pv , COUNT(DISTINCT uid) AS uv FROM dw_user_trace_log WHERE dt = ${bdp.system.bizdate} GROUP BY uid, region; step2:点击保存。 step3:点击返回,返回至工作流开发面板。 提交工作流任务 step1:点击提交,提交已配置的工作流任务。 step2:在变更节点列表弹出框中点击确定提交。 提交成功后工作流任务处于只读状态,如下: 测试运行任务 step1:进入运维中心 > 任务列表 > 周期任务,找到你提交的workshop工作流任务并展开。 step2:右键工作流任务名称,并选择点击测试,选择需要执行的业务日期,点击确认。 step3:跳转至测试实例页面,点击实例名称并展开测试的DAG图。 step4:可以点击右上角的刷新按钮进行查看节点执行情况,直至所有节点为绿色(执行成功)。 确认数据是否成功写入MaxCompute相关表 step1:返回到create_table_ddl脚本文件中。 step2:编写并执行sql语句查看rpt_user_trace_log数据情况。。 附录:SQL语句如下。 ---查看rpt_user_trace_log数据情况 select * from rpt_user_trace_log limit 10; 进入>>数据分析教程
实验背景介绍 了解更多2017云栖大会·北京峰会 TechInsight & Workshop. 本手册为云栖大会Workshop之《云计算·大数据:海量日志数据分析与应用》场的前提准备条件所需。主要为保障各位学员在workshop当天能够顺畅进行动手实操,那么本场需要各位学员再参加之前确保自己云账号已免费开通表格存储TableStore、大数据计算服务MaxCompute、DataWorks和Quick BI。 实验涉及大数据产品 表格存储 TableStore 大数据计算服务 MaxCompute 数据工场 DataWorks 智能分析套件Quick BI 其中表格存储TableStore、大数据计算服务MaxCompute的服务Region都选择华北2. 实验环境准备 必备条件:首先需要确保自己有阿里云云账号并已实名认证。详细点击: 注册阿里云账号 企业实名认证 个人实名认证 开通表格存储TableStore 若已经开通和购买了TableStore,可以忽略此步骤,直接进入开通MaxCompute步骤。 step1:进入阿里云官网并点击右上角登录阿里云账号。 step2:点击进入表格存储TableStore详情页,点击立即开通。 step3:进入开通页面,点击立即开通。 step4:随之点击进入管理控制台。 step5:创建实例,选择华北2,点击创建实例,选择容量型实例。 注意:实例名称在TableStore中,同一个Region下是全局唯一,建议大家选用自己可辨识且符合规则的名称即可。在MaxCompute数据处理中也会用到此实例名称。 至此,北京云栖大会workshop所需的表格存储TableStore服务已经开通好。 关于如何选择实例,详见实例。 开通大数据计算服务MaxCompute 若已经开通和购买了MaxCompute,请忽略次步骤直接进入创建DataWorks项目空间。 step1:点击进入大数据计算服务产品MaxCompute详情页,点击立即购买。 step2:选择按量付费并点击立即购买。 注意:选择华北2(北京)Region进行按量付费服务的开通。 创建DataWorks项目空间 确保阿里云账号处于登录状态。 step1:点击进入大数据(数加)管理控制台>大数据开发套件tab页面下。 step2:点击右上角创建项目,跳出创建项目对话框。 step3:勾选付费方式为I/O后付费,填写项目名称及相关信息,点击确定,直至返回创建成功状态。 项目名需要字母或下划线开头,只能包含字母下划线和数字。 【注意】项目名称全局唯一,建议大家采用自己容易区分的名称来作为本次workshop的项目空间名称。 0元购开通Quick BI 确保阿里云账号处于登录状态。 step1: 点击进入产品-大数据分析及展现-Quick BI详情页,点击管理控制台。 step2:进入控制台页面,点击高级版30天试用申请。 step3:弹出高级版协议,先勾选同意Quick BI服务协议,再点击开通试用。 step5:成功开通Quick BI如下图所示,点击进入Quick BI高级版 开始分析。 通过以上的步骤就可以完成北京workshop《云数据·大计算:快速搭建互联网在线运营分析平台》场的实验环境配置。
云栖大会·北京峰会大数据Workshop入口 该课程是基于大数据时代APP日志分析的基础需求的基础上,给开发者从数据高并发写入及实时在线访问存储到便捷高效的数据加工处理最终再到数据分析与展示的完整链路解决方案。不仅可以了解并实操到阿里云的产品,同时可以自己可以跟着讲师动手完成在线运营分析平台的搭建。 准备工作 为保证大家能够在Workshop现场能够顺利开展实验教程,需要大家根据如下教程来进行相关准备工作。 实验环境准备 详细教程 数据接入:海量数据存储及实时访问 数据处理:数据建模与加工 数据分析:构建可视化报表服务 在Workshop过程中或结束后,您都可以通过扫描如下钉钉群二维码方式进入产品技术交流群。
背景: 针对即将要开通MaxCompute或者已经开通MaxCompute但是还没有梳理清楚其中的概念,也无从下手如何快速入门MaxCompute?近期在这一方面上,咨询的同学也越来越多,总体在学习路径上也有一些资料可以分享给大家,更多的概念、产品定义可以详见官网文档。 关于如何开通: step1:登录管控台 >> step2:开通服务模式(预付费/后付费) 只需要两步就可以搞定!! step1:点击进入大数据计算服务产品MaxCompute详情页,点击立即购买。 step2:选择按量付费并点击立即购买。 关于如何选择付费模式 关于MaxCompute的计费模式,包括包年包月(也称预付费)和按量付费(俗称后付费)。 通俗的理解,我们拿手机运营商流量套餐来举例,我现在是电信129的套餐,享受每个月12GB的省内流量,可以理解为MaxCompute预付费,一个月10CU(相当于手机流量)需要花费1500;还有一种就是,我手机不购买任何套餐,我流量花多少我在第二个月支付就好,可以对应为MaxCompute的后付费模式。 >>>>更多介绍详见官网文档。 想必大家在选择手机运营商套餐的时候也会纠结,我包月还是不包,可以理解为我要预付费还是后付费,同样,在MaxCompute付费模式也会存在这样的问题。如果我预付费,但是我的使用量达不到我就亏了;如果我选择后付费,但是使用的量大于预付费了,那还是预付费划算更便宜。 在这里有个小建议,一开始熟悉使用阿里云MaxCompute及周边商品建议使用后付费模式,如果已经在使用量也确实很大,需要在两者之间做个平衡,具体大家可以参考:《帮助企业做好MaxCompute大数据平台成本优化的最佳实践》 快速入门的材料 帮助开通用户快速掌握熟悉MaxCompute的使用与开发,都是step by step的案例教学,最终可以完成对应的案例场景,希望能够帮助。 1、将ECS、RDS数据同步至MaxCompute并构建数仓进行调度:《海量日志数据处理及应用》 2、需要将ECS上的Ngnix实时采集/离线分析:《基于阿里云数加StreamCompute和MaxCompute构建的访问日志统计分析》《基于阿里云数加·StreamCompute快速构建网站日志实时分析大屏》《基于阿里云数加·MaxCompute及Quick BI构建网站用户画像分析》 3、生态系统如何与MaxCompute搭配使用,包括Logstash、Fluentd、Flume以及SDK(Java、Python、R、PHP、Ruby)的介绍《阿里云大数据计算服务MaxCompute与生态系统的融合》 在学习使用过程中,如果大家需要MaxCompute产品运营侧为大家提供代金券支持,可以点击申请代金券。需要获取产品方帮助,也可以通过顶顶扫码方式入群: 附上:阿里巴巴大数据计算平台MaxCompute(原名ODPS)全套攻略(持续更新20171127)
MaxCompute大家都不陌生,之前产品名称叫ODPS,之后随国际化而更名。从支持阿里集团内部99%数据业务到计算能力对外输出,帮助政府、互联网公司、金融等进行大数据项目服务,使得数据变现。很多开发者都会把MaxCompute和开源社区Hadoop、hive进行比较,此处不做过多评论,各有优势。但是不得不说MaxCompute这几年在生态上向前走了一大步。 关于 MaxCompute2.0 对开源系统的支持与融合 的整体介绍及团队规划,详见文档。 最近,我也针对MaxCompute在生态融合上也进行了一些研究和拜读,因为现在资料还比较零散,就把自己在过程中遇到的好材料统一为大家梳理如下,包括SDK、JDBC等。 MaxCompute SDK 首先我们先来看SDK,想必很多有能力的互联网公司都有大量的个性化需求,都会对SDK/API有一些需求,比如小黄车这样的体量大的客户,就基于MaxCompute SDK做了大量的应用。那具体SDK包括Java、Python、R以及PHP(PHP为社区提供,并非阿里云官方出品,但都可以满足大部分需求)。如图所示: Java SDK:MaxCompute团队官方开发并维护,具体可以详见:官网文档 和 SDK Java DOC Python SDK:MaxCompute团队官方开发并维护的PyODPS,具体可以详见:官网文档 和 云栖社区博客。 更大强大的功能,大家可以期待下团队将在北京云栖大会对外正式公测的python UDF,这将大大的提高python开发者对MaxCompute的开发效率和功能。 R SDK:RODPS也较大满足开发者使用R做数据分析的需求,具体安装及使用可以详见 云栖社区博文 PHP SDK:PHP SDK并非MaxCompute团队官方出品,由社区招募完成开发工作,具体有PHP需求的同学也可以参考PHP SDK文档,可以满足PHP开发的大部分需求。 Ruby SDK:同PHP SDK由开源爱好者贡献,具体详见:https://github.com/aliyun-beta/aliyun-odps-ruby-sdk MaxCompute JDBC 2.2 发布说明 对接已有软件并提供标准JDBC编程接口,MaxCompute JDBC 2.2正式版已于2017年2月24日正式发布。 github地址:https://github.com/aliyun/aliyun-odps-jdbc/releases/tag/v2.2 V2.2详细说明:https://yq.aliyun.com/articles/72791 V2.0详细说明:https://yq.aliyun.com/articles/59443 通过Apache Zeppelin 快速实现数据可视化 借力QlikView玩转数据分析 Hive Proxy 提供Hive Thrift协议兼容接口,对接Hive社区已有的工具。Hive Proxy 部署在客户端,将 Hive 的 thrift 请求转换成 MaxCompute 的 Restful API 请求,可以用来直接对接诸如 Tableau、Qlik 这样不直接支持 JDBC 的 BI 工具,或者 HPL 这样的 Hive 组件,详见 博文。 示例1:复用Hive ODBC实现Tableau到MaxCompute的连通 示例2:复用Hive JDBC实现Beeline到MaxCompute的连通 具体详见:https://yq.aliyun.com/articles/61262 ETL tool-数据上云工具 Kettle:[ETL实践指南]基于Kettle的MaxCompute插件实现数据上云 sqoop:MaxCompute有一款是基于社区sqoop 1.4.6版本开发的Sqoop,增加了对MaxCompute的支持,可以支持将数据从Mysql等关系数据库和MaxCompute的导入和导出,也支持从Hdfs/Hive导入数据到MaxCompute的表中。 具体用法可以参考:https://github.com/aliyun/aliyun-maxcompute-data-collectors/wiki/odps-sqoop OGG:主要适用于源库为Oracle,可以通过其采集实时更新数据到DataHub中。 通过OGG将数据采集至MaxCompute/基于OGG Datahub插件将Oracle数据同步上云 Fluentd:该插件遵守Fluentd输出插件开发规范,安装方便,可以很方便地将采集得到的数据写到DataHub。通过Fluentd将数据采集至MaxCompute Flume:Flume插件下载并安装地址,基于Apache Flume Datahub插件将日志数据同步上云,点击进入 Logstash:Logstash是一种分布式日志收集框架,非常简洁强大,经常与ElasticSearch,Kibana配置,组成著名的ELK技术栈,非常适合用来做日志数据的分析。 通过Logstash将日志数据采集至MaxCompute。 关于Logstash将日志采集MaxCompute,然后做数据分析有详细step by step 文档,点击进入。 Spark on ODPS、ElasticSearch on ODPS等在专有云和阿里集团内成熟应用,公共云上的开发者可能要耐心等待一段时间。
10月12日,Apache Flink商业公司DataArtisans CEO、联合创始人Kostas Tzoumas在云栖大会上宣布和阿里集团达成战略合作伙伴关系,希望能够借助全球最大的云计算公司之一阿里云,服务更多的大数据实时流计算的客户。同时期待通过加强和阿里集团技术合作,进一步优化Flink大数据处理能力,提升Flink在开源社区的影响力, Apache Flink是目前开源最火爆的实时大数据计算引擎。在大数据开源社区,通常把Hadoop和Hive为代表的大数据引擎称之为第一代大数据处理系统,以Spark为代表的称之为第二代大数据处理系统。Apache Flink超越了前述两代大数据系统,其底层架构完全面向实时大数据计算场景,具备低时延、大吞吐、状态管理、集群容错以及exactly-once处理语义等技术特点,这些使得Flink系统处理流式数据更加得心应手。除此之外,Flink系统同样具备批处理、迭代计算、图计算、机器学习的等计算能力,上述功能让Flink处理大数据更加普适性,促使Apache Flink成为完整的大数据处理软件栈,成为第三代大数据处理系统代表。 在战略合作发布会上,阿里集团计算平台事业部负责人、阿里集团副总裁周靖人博士表示:“阿里集团计算平台作为阿里集团大数据计算的技术平台,服务于整个阿里集团内部业务以及外部阿里云客户。” 他指出:“阿里集团计算平台一直密切关注并参与业界最新计算技术。对于开源大数据生态,阿里集团计算平台积极拥抱开源、参与开源、回馈开源。我们希望通过阿里集团和DataArtisans的技术合作,能够进一步促进和优化Flink在阿里内部的业务应用,并且能够借助阿里云平台,将我们强大的云计算能力服务整个社会。” DataArtisans CEO Kostas Tzoumas表示:“Apache Flink社区以及DataArtisans公司,之前一直和阿里集团计算平台实时计算团队保持紧密技术合作。我们希望通过本次战略合作关系发布,进一步加深双方的技术和业务合作关系。我们希望通过与亚洲最大的云服务商阿里云合作,配合Apache Flink的实时大数据处理能力,能够进一步服务到更多的云计算、大数据客户。”。 此外,在本次发布会上,周靖人还表示阿里集团和Flink社区一起将Flink Forward大会引入中国,希望借助Flink Forward大会能够进一步提升Flink中文社区活跃度,汇聚Flink开发者,扩大Flink影响力。
2017杭州云栖大会于10月14日完美闭幕,据说今年6W+人的技术盛宴(我们先不追究具体多少人)。大家可能更多的只知道马老师谈及到阿里巴巴达摩院、听到各种刷脸支付的高科技、各种数据大脑的发布,但是我觉得作为一个大数据入门者,你只知道这些远远不够! 笔者作为多年云栖大会的经历者也是参与者,总结相关阿里云大数据的相关材料,如下,希望帮助到更多的入门者。 10日 大数据Workshop,带你手把手使用阿里云大数据产品 《云数据·大计算:海量日志数据分析与应用》总体包括数据集成、DataWorks以及海致BDP。 数据集成:日志数据采集 数据加工:用户画像 数据分析展现:可视化报表及嵌入应用 教程入口:https://yq.aliyun.com/articles/72538 《在线用户行为分析:基于流式计算的数据处理及应用》总体包括日志服务、流计算StreamCompute、数据可视化DataV。 流数据采集:海量流式视频日志收集 流数据处理:通过StreamSQL分析视频日志 数据可视化:构建实时动态运营数据分析大屏 教程入口:https://yq.aliyun.com/articles/221720 10月12日 DataWorks专场 大家在进行数据开发过程中会涉及到从数据采集、数据地图、数据模型设计、ETL开发、机器学习、任务调度、运维监控到数据治理等全流程的开发工作,DataWorks提供了整套解决方案,相关内容如下: DataWorks-下一代智能数据工场 DataWorks数据研发体系 数加DataWorks在国网浙江电力的最佳实践 美柚混合云架构与女性个性化推荐系统实践 大数据金融,让普惠成为现实! DataWorks数据治理体系介绍 专场视频入口:(待提供) 10月14日 大数据计算服务MaxCompute专场 MaxCompute(大数据计算服务)是阿里巴巴的自主研发的大数据计算平台型产品,从ODPS到MaxCompute,目前已经在阿里巴巴集团内外拥有众多行业客户并且得到深度应用。本次云栖大会专场为大家呈现MaxCompute在进化过程中的诸多创新和技术演进。 视频入口:https://yunqi.aliyun.com/2017/hangzhou/videos?spm=a21cy.10467250.880280.127.9lOuKw&wh_ttid=pc#/video/249 议题包括: MaxCompute 2.0:阿里巴巴的大数据进化之路 MaxCompute拥抱开源大数据技术生态 MaxCompute的索引与优化实践分享 MaxCompute助力众安保险快速成长 MaxCompute基于TPCx-BB标准的最新测试进展 MaxCompute的NewSQL进展 10月14日 流计算StreamCompute2.0专场 流计算发布2.0版本,新版流计算最新基于Blink/Flink的流式处理引擎,Apache Flink是超越Spark的下一代通用大数据计算平台架构,属于流计算的黑科技级别产品。 视频入口:https://yunqi.aliyun.com/2017/hangzhou/videos?spm=a21cy.10467250.880280.144.9lOuKw&wh_ttid=pc#/video/236 议题包括: 阿里云流计算2.0——实时计算平台Blink重磅发布 阿里新一代实时流计算引擎(Blink)技术解密 StreamSQL 2.0 核心功能解密 阿里云流计算在阿里集团搜索与推荐业务的应用 实时计算助力协鑫光伏实现工业4.0 阿里巴巴实时计算平台产品与技术展望 10月14日 机器学习平台 PAI 专场 内容包括: 阿里云机器学习平台 PAI 印刷文字识别算法设计与在线服务 千亿特征流式学习在大规模推荐排序场景的应用 端到端GPU性能优化在深度学习场景下的应用实践 机器学习平台架构和实践 机器学习之人机交互实战 视频入口:https://yunqi.aliyun.com/2017/hangzhou/videos?spm=a21cy.10467250.880280.262.cx3ruJ&wh_ttid=pc#/video/234 更多关于阿里云大学Clouder Lab的内容 阿里云大学Clouder lab 大数据分析专场 基于阿里云PAI进行机器学习,进行实际业务中,客户流失情况的预警。 阿里云大学Clouder lab 大数据开发专场 带领大家体验大数据开发实战:快速搭建企业级数据分析平台。 以上还有些视频和PPT资料带整理和上传,期望能够帮助到大家学习阿里云大数据的相关产品。
实验背景介绍 了解更多2017云栖大会·杭州峰会 TechInsight & Workshop. 本手册为云栖大会Workshop之《在线用户行为分析:基于流式计算的数据处理及应用》场的《数据可视化:构建实时动态运营数据分析大屏》篇所需。主要帮助现场学员熟悉并掌握DataV数据可视化的操作和使用。 实验涉及大数据产品 DataV数据可视化 前提准备 必备条件:1、已经从云中沙箱中获取了实验所需的阿里云账号和密码。2、安装56版本以上的GOOGLE CHROME浏览器。 实验目标 本实验将会实现如下的实时动态运营数据分析大屏大屏。 创建可视化大屏 经过上述《流数据处理:通过StreamSQL分析视频日志》章节创建的流式任务,我们可以创建酷炫的可视化大屏展示网站实时流量统计情况,为了便于大家快速掌握DataV的使用,请使用事先准备好的RDS数据源。 进入DataV管理控制台 点击进入DataV可视化管理控制台。 添加数据源 step1:进入DataV管理控制台,点击左侧菜单中我的数据。 step2:点击+添加数据,跳出新建数据对话框。 step3:配置数据类型为RDS for MySQL、名称、域名、用户名/密码、端口和数据库,点击“获取数据列表”,选择“workshop”,并点击测试连接,最后点击“完成”。 具体数据源配置项如下: 数据源类型:RDS for MySQL,内网,华东2 名称:workshop_rds 域名:rm-uf6t1mym355i3qdsw.mysql.rds.aliyuncs.com 用户名:root 密码:Workshop001 端口:3306 数据库:workshop 创建DataV可视化大屏 step1:点击左侧我的可视化,进入配置大屏操作;再点击2017_WORKSHOP_HZ进入大屏编辑界面。 step2:此处大屏模板为此次Workshop量身定制,大家直接进入配置界面即可。DATAV功能布局见图示。 配置DataV数据图表 依次配置实时在线人数(数字翻牌器)、热门房间排名(轮播列表柱状图)、在线人数变化趋势(折线图)、用户卡顿率趋势(折线图)、访问设备比例(饼图)、用户故障地理分布(点热力图)。 配置实时在线人数(数字翻牌器) step1:点击数字翻牌器,进入配置实时在线人数(数字翻牌器)页面。 step2:点击数字翻牌器左侧“数据“选项卡,进入数据配置面板。 数据类型选择数据库,选择数据库为workshop_rds(刚创建的数据源名称)在SQL底部勾选自动更新,设置每5秒请求一次。因为数据表包含了多条数据,需要获取最新的在线人数数据,故编写SQL如下: 附:SQL说明 SELECT sum(count_value) as value FROM online_num 配置热门房间排名(轮播列表柱状图) 点击轮播列表在右侧进行配置数据。统一选择数据类型为数据库,且选择数据库为之前所配置的workshop_rds。 附:SQL说明 SELECT sum(count_value) as value, roomid as content FROM hot_room_num where start_time < unix_timestamp()*1000 and start_time > (unix_timestamp()-100)*1000 group by content order by value DESC limit 5 配置在线人数变化趋势(折线图) step1:同样点击在线人数变化趋势(折线图),进入数据配置页面。 step2:配置数据源。 数据类型选择数据库,选择数据库为workshop_rds(刚创建的数据源名称)在SQL底部勾选自动更新,设置每5秒请求一次。 附:SQL说明 SELECT count_value as y, substring(start_time, 1, 19) as x FROM online_num order by start_time DESC limit 10 配置用户卡顿率变化趋势(折线图) step1:同样点击用户卡顿率变化趋势(折线图),进入数据配置页面。 step2:配置数据源。 数据类型选择数据库,选择数据库为workshop_rds(刚创建的数据源名称)在SQL底部勾选自动更新,设置每5秒请求一次。 附:SQL说明 SELECT block as y, substring(start_time, 1, 19) as x FROM block_min order by start_time DESC limit 10 配置访问设备比例(饼图) step1:同样点击配置访问设备比例(饼图),进入数据配置页面。 step2:配置数据源。 数据类型选择数据库,选择数据库为workshop_rds(刚创建的数据源名称)在SQL底部勾选自动更新,设置每5秒请求一次。编写SQL如下: 附:SQL说明 SELECT sum(count_value) as value, agent as type, max(start_time) as date_time FROM access_device where start_time < unix_timestamp()*1000 and start_time > (unix_timestamp()-100)*1000 group by agent 配置播放故障率(点热力图) step1:点击地图组件,再选择点热力图层子组件。 step2:进入数据配置页面,配置数据源。 数据类型选择数据库,选择数据库为workshop_rds(刚创建的数据源名称)在SQL底部勾选自动更新,设置每5秒请求一次。我们需要的数据包括经度、纬度和故障率,但是原始数据中,经度、纬度在一个字段中,且该字段包含空数据等脏数据;同时,故障率为0的数据我们不需要,因为对绘制热力图不起作用。这就需要我们用DATAV数据过滤器处理。先用SQL查询10000条数据,保证充足的数据量进行下一步过滤。附:SQL说明 SELECT * FROM region_failure_rate limit 10000 step3.1 添加数据过滤器 step3.2 将新建数据过滤器命名为“getVideoFaultValue” step3.3 编写数据过滤器 step3.4 选择应用数据过滤器“getVideoFaultValue” 附:数据过滤器代码说明 var processedData = []; data.forEach(function(d, i) { if(d.remoteip && +d.fault_video > 0) { var dataObj = {}; var latLngArray = d.remoteip.split(','); dataObj.lat = latLngArray[0]; dataObj.lng = latLngArray[1]; dataObj.value = +d.fault_video; processedData.push(dataObj); } }) return processedData; 至此我们对所有组件的数据都已经配置完成。 预览大屏 点击右上角预览,查看大屏效果,会看到数据实时的刷新。 发布大屏 通过发布操作可以将制作好的大屏分享别人查看。 step1:点击右上角发布,弹出发布对话框,打开发布按钮会生成链接。 复制生成的URL即可共享你的大屏作品,观看制作的流式数据大屏。其他验证密码、验证Token可以参考更多教程来完成,此处将不赘述。 到此为止,相信大家一定程度掌握了阿里云流式日志的分析及处理解决方案有了一定了解,包括Log、StreamCompute到最后的DataV大屏展示。更多内容请大家持续关注文章的更新和后续的workshop内容出品。
实验背景介绍 了解更多2017云栖大会·杭州峰会 TechInsight & Workshop. 本手册为云栖大会·杭州峰会Workshop之《在线用户行为分析:基于流式计算的数据处理及应用》场的《流数据处理:通过StreamSQL分析视频日志》篇所需。主要帮助现场学员熟悉并掌握阿里云流计算StreamCompute的操作和使用。 实验涉及大数据产品 阿里云流计算StreamCompute 前提准备 确保已经从云中沙箱中获取了实验所需的阿里云账号和密码。 进入阿里云流计算开发平台 step1:进入 阿里云流计算开发平台,点击前往授权。 step2:在云资源访问授权页面,点击同意授权。 声明数据来源 该业务场景是以Log来采集的实时视频日志流,下面需要用StreamCompute来分析处理视频流日志。 step1:点击顶部菜单栏中的开发,进入开发页面。 step2:右键选择新建文件夹,在弹出框中填写文件夹名称为workshop_log(可根据需求命名),点击创建。 step3:在新建的workshop_log文件夹上右键选择新建作业,在新建作业弹出框中命名作业名称为workshop(可根据需求命名),点击新建。 step4:根据需求修改代码备注信息,进入编写StreamSQL开始编写SQL。 step5:引用数据来源于前面章节已经配置成功的Log信息。 SQL逻辑如下: CREATE TABLE client_operation_log ( userid VARCHAR, `timestamp` VARCHAR ) WITH ( type='sls', endPoint='http://cn-shanghai-intranet.log.aliyuncs.com', AccessId='账号对应的accessID', AccessKey='账号对应的accesskey', project='前一章节中日志服务的project名称', logStore='client-operation-log' ); 声明数据目标 经过StreamCompute分析处理的数据最终写入RDS存储中。 创建结果表,其将结果输出到RDS表中。 出品方为大家准备了RDS,每个学员的数据库名称均为workshop_[abc],其中[abc]为您的云账号后三位数字,比如云账号为train00620@aliyun-inc.com,那么您需要替换为workshop_620. SQL逻辑如下: create table online_num( start_time TIMESTAMP, count_value BIGINT, PRIMARY KEY(start_time) ) with ( type='rds', url='jdbc:mysql://rm-uf6t1mym355i3qdsw.mysql.rds.aliyuncs.com:3306/workshop_[abc]',--记得替换为自己的数据库名 tableName='online_num', username='root', password='Workshop001' ); 编写StreamSQL分析数据 进入核心逻辑编写阶段,计算指标为统计当前在线人数。 编写当前在线人数的StreamSQL计算逻辑。 SQL逻辑如下: INSERT INTO online_num SELECT CAST(from_unixtime(CAST(`timestamp` AS BIGINT)/1000) AS TIMESTAMP), COUNT(DISTINCT userid) FROM client_operation_log GROUP BY CAST(from_unixtime(CAST(`timestamp` AS BIGINT)/1000) AS TIMESTAMP); 提交作业 step1:点击右侧的资源配置tab页,展开具体信息。 step2:点击蓝色获取自动生成JSON配置,等待数秒后生成完毕。 直到生成完毕,如下图所示: step3:点击保存按钮保存当前配置信息,即后点击提交将代码提交至Blink引擎。 启动作业 通过上述步骤将已经创建好的StreamSQL作业提交至生产集群上,但还需要在运维中进行启动作业,方可执行流式作业。 step1:点击顶部菜单栏中的运维进入运维中心。 step2:找到自己的流式作业workshop,点击操作栏中的启动。 step3:在启动作业对话框中,点击按以上配置启动。 通过上述步骤作业处于启动中,直至状态显示运行,表示作业上线并启动成功。 step4:点击任务操作栏中的查看详情进入运维大屏查看任务概况。 step5:在作业仪表盘中开启实时刷新,并关注数据输入和数据输出,如下图显示正常表示流式任务处理正常。 开启实时刷新后,底下的监控图会由于作业提交集群执行过程有所1分钟左右延迟刷出。 确认数据产生 流式作业跑起来,还需要确认是否数据已经写入目标端。 step1:首先在作业仪表盘中确认数据输入和数据输出是否正常。 step2:从作业仪表盘中确认数据输入和输出都正常,也可在血缘关系图中进行数据抽样。 step3:切换至血缘关系图找到目的端RDS,右键并选择抽样数据。 数据抽样结果如下: 数据抽样结果如上图所示,至此我们针对实时在线人数的指标已经完成。其他相关指标大家可以专心听讲师分析和讲解,后续也会提供源码。
实验背景介绍 了解更多2017云栖大会·杭州峰会 TechInsight & Workshop. 本手册为云栖大会Workshop之《在线用户行为分析:基于流式计算的数据处理及应用》场的《流数据采集:海量流式视频日志收集》篇所需。主要帮助现场学员熟悉并掌握阿里云日志服务Log的操作和使用。 实验涉及大数据产品 阿里云日志服务Log 前提准备 必备条件: 确保已经从云中沙箱中获取了实验所需的阿里云账号和密码。 购买开通日志服务产品。 开通日志服务Log step1:进入阿里云日志服务Log管控台并使用阿里云账号进行登录。 您获得账号需要按照引导进行自助开通日志服务。开通后即可体验如下课程。 step2:进入阿里云日志服务管理控制台。 创建日志服务Project 阿里云日志服务project名称是全局唯一的,建议大家本次实验按照workshop-abc的规则来命名,abc为您获取的云账号后三位数字。如获取云账号为train00620@aliyun-inc.com,那么project名称命名为workshop-620。 step1:点击右上角创建Project进入创建Project页面。 step2:在弹出框中填写需要配置的Project参数。 Project名称:按照workshop-abc的规则来命名,如workshop-620,620为您获取到云账号后三位数字。 所属区域:华东2,即上海。 step3:点击确认之后,弹出如下对话框,并点击创建按钮,进入创建LogStore页面。 创建日志服务Logstore 本案例场景需要您一共创建三个Logstore,分别说明如下: vedio-server-log:用于收集服务端流媒体的编码解码等日志。 client-operation-log:用于收集用户在浏览器、客户端的操作日志。 web-tracking-log:用于演示WebTracking采集播放器操作日志。 开始分别创建以上三个Logstore: 创建Logstore:vedio-server-log step1:在创建Logstore弹出框中配置如下信息。 Logstore名称:vedio-server-log,其他均采用默认。 step2:创建成功之后提示创建Logtail配置,点击创建Logtail. step3:进入创建Logtail页面。 step3.1:选择数据源配置中,选择文本文件并点击下一步。 step3.2:指定采集模式配置中,配置采集模式如下: 配置项说明如下: 配置名称:vedio-server-log 日志路径:/root,具体日志文件名为:vedio-server.log 模式:选择JSON模式。 step3.3:配置完采集模式后,点击下一步进入应用到机器组配置页面,点击+创建机器组: 创建机器组弹出框: 获取ECS内网IP step4:登陆ECS控制台,获取自己账号下的ECS虚拟机的内网IP: 注意:ECS区域也是在华东2,上图为示例图. step5:将获取到的内网IP填到IP地址框中,并填写其他机器组名称,具体如下: 配置项说明如下: 机器组名称:myvm 机器组标识:选择IP地址 IP地址:从ECS管控台获取到的内网IP地址。 step6:将配置应用到机器组: 上述步骤做完之后便完成了vedio-server-log日志的采集配置。 创建Logstore:client-operation-log 大体操作步骤同上,创建Logstore:vedio-server-log,差异点在指定采集模式上。 step1:首先点击左侧菜单中的日志库,继而点击右上角创建,进入创建Logstore页面。 step2:在创建Logstore页面中配置信息如下。 Logstore名称:client-operation-log,其他选项均为默认。 step3:继而在弹出中选择创建Logtail配置。 step4:选择数据源依然选择配置为文本文件,在指定采集模式配置中,如下: 配置项说明如下: 配置名称:client-operation-log 日志路径:/root,具体日志文件名为:client-operation.log 模式:选择JSON模式。 step5:将采集配置应用到之前创建好的机器组myvm: 创建Logstore:web-tracking-log step1:首先点击左侧菜单中的日志库,继而点击右上角创建,进入创建Logstore页面。 step2:在创建Logstore页面中配置信息如下。 配置项说明: Logstore名称:web-tracking-log 选择开启webTracking功能。 step3:点击确定按钮后,弹出创建Logtail框,直接点击取消即可。 注意创建该Logstore时,需要打开WebTracking,另外,这个Logstore不需要创建采集配置,到这里web-tracking-log就创建好了。 所有已经配置的Logstore就已经完成,如下图所示: 启动ECS VM进行mock视频流数据 为了更真实的模拟直播视频的日志产生、采集再到处理的整个链路,我们为每个学员都提供了一台专属ECS,便于体验全链路workshop流程。 step1:登陆ECS控制台,找到在Logtail配置过程中的机器组实例,点击远程连接,登陆到ECS VM上。 step2:初次使用会弹框显示6位数的远程连接密码,切记一定要复制下来。 step3:输入远程连接密码,如果忘记密码,点击右上角修改,然后重新登陆。 step4:从云中沙箱获取登录账号和密码,并登陆成功之后,进入到ECS VM的命令窗口: step5:点击右上角复制命令输入,复制如下命令并修改自己的project名称: sh start.sh workshop-hz [your log project name] 其中第二个参数(your log project name)填写之前创建好的日志服务的Project名称。 举个例子,如果之前创建的日志服务的Project名称是workshop-620,执行的命令如下: sh start.sh workshop-hz workshop-620 执行成功后,在该台ECS上,一个播放网站以及模拟产生播放日志的程序就启动好了。这里请务必保证输入的日志服务的Project名称正确无误。 step5:在当前目录下执行ls -la命令,确认环境是否被正确搭建。 在当前目录(/root/),执行ls -la命令,如果看到上图红框中两个日志文件已经产生,那就表示环境已经搭建好了,如果没有搭建好,请在WorkShop现场举手示意。 验证日志采集 经过创建Logstore、配置Logtail以及启动ECS上相关程序后,整个视频日志流采集的流程就全部完成了。接下来就是验证日志数据是否成功收集到日志服务中了。 step1:回到日志服务控制台,点击之前创建的Project,进入Project管理页面。 step2:点击预览按钮,查看采集上来的日志。 通过上述步骤可以验证,vedio-server-log和client-operation-log日志库中是否已经有采集到日志进来。 step3:验证web-tracking-log播放器操作日志。回到ECS控制台,找到ECS实例的公网IP,比如我的ECS的公网IP是:101.132.26.92 step4:浏览器中访问该公网网址:http://101.132.26.92,打开播放页面如下。 可以反复多次点击播放、暂定按钮。 step5:点击预览进入日志预览页面。 上图可以看到刚才在播放器的操作行为都被记录到web-tracking-log这个Logstore里面了。至此,一个完整的日志采集流程便完成了。
实验背景介绍 了解更多2017云栖大会·杭州峰会 TechInsight & Workshop. 本手册为大数据Workshop之《在线用户行为分析:基于流式计算的数据处理及应用》场的前提准备条件所需。主要为保障各位学员在workshop当天能够顺畅进行动手实操,那么本场需要各位学员根据组织方提供的云账号进行开通如下产品阿里云日志服务Log、阿里云流计算StreamCompute和数据可视化DataV。 实验涉及大数据产品 阿里云日志服务 阿里云流计算 StreamCompute 数据可视化DataV 实验环境准备 必备条件:从云中沙箱中获取实验所需的云账号和密码、AccessID和Accesskey等信息(具体详见会场提供的A4单页)。 通过以上的步骤就可以完成workshop《在线用户行为分析:基于流式计算的数据处理及应用》场的实验环境配置,更多精彩内容我们10月10日下午云栖大会·杭州峰会不见不散!
云栖大会·杭州峰会大数据Workshop入口 《在线用户行为分析:基于流式计算的数据处理及应用》主要议题安排: 钉钉扫码进入阿里云日志服务、阿里云流计算和DataV可视化交流群。 1)流数据采集:海量流式视频日志收集 2)流数据处理:通过StreamSQL分析视频日志 3)数据可视化:构建实时动态运营数据分析大屏 该课程是针对一个视频直播网站实时产生的日志数据流进行采集并分析,深度直播平台的实时运营状态,为运营提供策略。包含阿里云日志服务Log、流式计算引擎StreamCompute和酷炫的DataV可视化大屏。 专场议程介绍 在《云数据·大计算:海量日志数据分析与应用》workshop中大家都可以体验到离线数据处理的魅力,但是往往在日常中,数据会随着时间的递增价值却在递减,那么就需要实时的在线分析,极大挖掘数据背后的价值。本场《在线用户行为分析:基于流式计算的数据处理及应用》将为你揭秘流式数据是如何处理、加工和展示。 准备工作 为保证大家能够在Workshop现场能够顺利开展实验教程,需要大家根据入场时领取的“云中沙箱操作指南”A4纸进行操作,获取实验账号。 详细教程 实验环境准备 流数据采集:海量流式视频日志收集 流数据处理:通过StreamSQL分析视频日志 数据可视化:构建实时动态运营数据分析大屏 也请大家持续关注我们阿里云数加的其他场Workshop《云数据·大计算:海量日志数据分析与应用》。后续我们会持续不断的推新,普惠阿里云大数据的能力,帮助大家低成本掌握阿里云产品解决自己的业务场景。
实验背景介绍 本手册为阿里云MVP Meetup Workshop《云计算·大数据:海量日志数据分析与应用》的《数据分析展现:可视化报表及嵌入应用》篇而准备。主要阐述如何使用Quick BI制作报表,将前面几个实验处理分析得来的数据进行有效的展现和洞察。 《数据加工:用户画像》实验中的结果表数据已经事先导入RDS中,表名为rpt_user_info_all_d。该表包含了:用户id、地区、性别、年龄范围、星座、访问设备、PV 等访问信息。 实验目标 承接前述实验加工好的数据表,通过Quick BI完成网站用户分析画像的仪表板。 在该仪表板中,将展示用户的地区分布、设备分布和访问明细记录。 并能够根据年龄范围的查询条件,动态更新图表数据内容。 涉及大数据产品 Quick BI 实验环境准备 必备条件: 确保阿里云账号处于登录状态。 step1:点击进入大数据(数加)管理控制台>Quick BI tab页面下。 step2:点击购买Quick BI标准版。 step3:在购买页面中,点击立即购买。 step4:在确认订单页面中点击去支付,并确认支付。 step5:成功开通Quick BI。 进入Quick BI 确保阿里云账号处于登录状态。 step1:点击进入Quick BI管理控制台。 step2:点击进入Quick BI标准版。 添加数据源 《数据加工:用户画像》实验将数据导入云数据库RDS后,可以利用Quick BI添加为数据源进行分析和展示。本章节为了大家快速的掌握Quick BI的使用提前将数据给大家拷贝了一份在官方的RDS里,大家只需要配置即可用。 step1:点击左侧数据,进入数据管理页。 step2:切换至数据源标签页,点击新建数据源。 [说明] 数据量千万级别,响应速度秒级。添加RDS数据源,可以直联任何一个云上RDS数据库,或ECS中用户自建的RDS。 step3:在新建数据源对话框中,选择并点击RDS for MySQL。 step4:配置RDS for MySQL数据源,并点击测试连通性,待连通性测试通过后,点击添加保存现有配置信息。 RDS for MySQL数据源配置信息如下: 显示名称:workshop 数据库地址: rm-bp1z69dodhh85z9qa.mysql.rds.aliyuncs.com 端口:3306 数据库:workshop 用户名/密码:workshop/workshop#2017 step5:点击数据源列表页中workshop数据源这行,显示该数据源下的数据表,找到表rpt_user_info_all_d,并点击创建数据集按钮生成数据集。 编辑数据集 说明: 将对表的加工过程固化保存下来以避免重复操作。 常见加工:维度、度量的切换、修改维度的类型、 增加计算字段、创建层次结构、修改字段的数据类型、更改度量聚合方式、制作关联模型。 step1:点击编辑按钮,进入编辑数据集页面。 step2:转换包含地理信息的字段的维度类型(一般字段不需要转换)。选择region字段->右键->维度类型切换->地理信息->省/直辖市。如下图所示: 转换成功后,在左侧维度栏中会看到region字段前多一个地理位置图标,如下图所示: step3:点击保存,保存数据集。 制作工作表 说明: 主要用于对于数据全方位的探索分析。 支持随意对维度、度量进行拖拽选择后进行查询,得到工作表内容,支持对维度、度量的过滤,支持排序,支持报表样式的设置。 保存的工作表,可以做为下一章节【制作仪表板】的数据来源,直接展现 下面希望获得每个地区(region),不同设备(device),不同性别(gender),不同年龄范围(age_range)的访问网站的pv量。 step1:点击左侧数据,找到数据集rpt_user_info_all_d 这行,点击表格分按钮,就会新建一个工作表对该数据集进行多维分析。 step2:分别选择需要分析的维度:region、device、gender、age_range并拖拽至分析面板行中,选择度量pv拖拽至分析面板中的列中,点击查询按钮, 得到每个地区、不同设备、不同性别、不同年龄范围的访问网站的pv量。 step3:点击保存,保存工作表名称为:访问明细。 制作仪表板 与上一节衔接,将分析结果固化为可视化报表。随着数据的更新,报表可视化展现最新数据。我们把这个过程叫制作仪表板。 制作思路:确定内容->确定布局和样式->制作图表->实现动态联动查询。 制作模板如下: 【说明】仪表板创作界面的工具布局: step1:点击主导航上的作品菜单,点击新建下拉菜单下的新建空白仪表板按钮,就可以开始创建一个仪表板。 step2:从仪表板空间中向画布拖入文本框并命名为网站用户画像。 step3:点击图表区域内的色彩地图,并选择数据源来源为来自数据集rpt_user_info_all_d,选择维度为region(地区)、度量为pv,选择完成后点击更新图表按钮,结果如下: 业务目的:查看访问用户的地域分布情况。 step4:将图表区域内的柱图拖拽至右侧画布,并配置选择数据来源为来自数据集rpt_user_info_all_d,选择维度为device(设备)、度量为pv,点击更新图表,结果如下: 业务目的:查看访问设备的分布情况. step5:点击图表区域内的交叉表,并选择数据源>来自工作表>访问明细(上述步骤中保存的工作表),点击更新图表按钮,结果如下: 业务目的:查看每个地区(region)、不同设备(device)、不同性别(gender),不同年龄范围(age_range)的访问网站的pv量。 step6:向画布中拖入控件区域内的查询条控件,在拖动指示分隔线落到文本框和气泡地图之间的时候,放下查询条件控件。 业务目的:增加查询条件年龄范围,实现动态图表。 拖动结束后,设置查询条件对应的字段、作用范围和样式: step6.1:首先将前面制作好的色彩地图、柱状图和交叉表控件的标题依次改为,地区分布和设备分布。 step6.2:接着,点击并设置查询条件对应到哪个字段和作用范围(上述配置的两个控件名称):变化的时候能影响到哪些图表控件。 step6.3:然后设置查询条件的显示样式,这里设置为枚举类型复选框样式。 [注意]鼠标选中查询条件的输入框后,样式设置界面才会出现。 step7:点击保存仪表板,名称为云栖大会workshop。 step8:点击预览仪表板。 修改年龄范围为不同的值,看仪表板的各个区块的图表的数据是否随着查询条件的变化而变化。 恭喜各位已经完成了数据清洗、加工到展现的链路。更多的关于Quick BI的进阶教程,详见:更多案例(销售数据分析、仪表板制作)
2017云栖大会·杭州峰会将于10月10日-14日在杭州云栖小镇隆重举行,据相关数据显示大会多场主题分论坛门票都已经售罄。在这110余场主题分论坛中,可能备受大家最为感兴趣是人工智能、大数据的专场。大数据的热度在深圳峰会、成都峰会、上海峰会都逐一印证。 提到阿里巴巴、阿里云大家都会想到大数据、科技,也会联想到阿里巴巴自研的大数据平台MaxCompute。MaxCompute从诞生至今也已经有7个年头了:从 2010 年 4 月,MaxCompute正式投入阿里云金融生产到2016 年 MaxCompute 2.0 云栖大会正式对外发布,无不证明MaxCompute在成长、在壮大、在拥抱生态、在赋能更多伙伴实现业务数据化,数据业务化。 (图:2016杭州云栖大会 计算平台负责人关涛做MaxCompute2.0发布) 距离2016年云栖大会已经整整一年,今年云栖大会·杭州峰会,MaxCompute会给大家带来什么不一样的主题分享呢?我们先看今年阿里云大数据计算服务(MaxCompute)专场的议题安排,在10月14日上午,具体如下: 时间 主题 讲师 9:00——9:30 MaxCompute 2.0:阿里巴巴的大数据进化之路 关涛 Senior Staff Engineer 9:30——10:00 MaxCompute拥抱开源大数据技术生态 李睿博 高级专家 10:00——10:30 MaxCompute的索引与优化实践分享 戴谢宁 高级专家 10:30——11:00 MaxCompute助力众安保险快速成长 王超群 众安保险数据总监 11:00——11:30 MaxCompute基于BigBench标准的最新测试进展 路璐 技术专家 11:30——12:00 大数据计算服务MaxCompute的技术回顾与发展 林伟 研究员 MaxCompute 2.0从对外发布至今已经一年之余(MaxCompute在对外发布、上线都是需要在阿里巴巴集团内生产上锤炼并按期稳定运行2个月才能对外),那在这一年阿里巴巴的大数据技术都在哪些方面进化了,从架构上,从计算效率上,从存储成本上,从拥抱开源生态上、从对非结构化数据的支持上等,MaxCompute2.0一直在进化,从未停止过。这里有我们MaxCompute掌门人关涛对各位开发者做一个年度总结,总结MaxCompute 2.0在这一年是如何蜕变? 那提起阿里巴巴自主研发的大数据计算平台MaxCompute,更多人可能都喜欢将其与Hadoop、Spark、Flink等开源社区的产品做对比。Hadoop生态的繁荣是所有开发者都毋庸置疑的,但是并不代表其可以被所有开发者乃至创业公司、经过几轮融资的风口公司以及数据业务壮大的公司所能够有效掌控利用起来的。需要的运维团队、机房建设、网络建设等都是互联网风头上公司不可承受的时间成本和财务成本。而MaxCompute在公共云上对外提供服务,所有开发者只需要1分钟开箱即用,无需关心底层架构、运维等,同时MaxCompute在拥抱生态上也有了大幅度提升,用户可以无缝将任务迁移至MaxCompute,等等。这一块由MaxCompute生态研发主管李睿博为大家带来精彩分享。 MaxCompute在这一年来也做了很多优化,对阿里巴巴集团内以及对外部的客户都无形中释放了很多红利,比如MaxCompute 2.0在索引与优化上做了很多优化。随着业务的复杂性提升,MaxCompute遇到的问题千奇百怪,五花八门,匪夷所思。本Topic皆在解密MaxCompute2.0索引的原理以及如何优化慢查询的实践。 为此,MaxCompute 运营团队要邀请到众安保险数据总监王超群,为大家分享,众安保险是如何用MaxCompute为众安保险插上了大数据的翅膀。众安保险是一家数据驱动的创新型互联网保险公司,这家公司通过大数据的手段挖掘新的社会需求、创造新的产品,公司几乎所有的数据业务、算法模型都每天安全可靠的运行在MaxCompute上。MaxCompute是如何助力众安保险在云计算时代快速成长,为数据驱动的公司带来了哪些价值。 对于MaxCompute 有了一个全新的SQL 2.0引擎,无不实现高性能与低成本。这些在国际上都是有相关记录,在2015年Sort Benchmark在官方网站公布了2015年排序竞赛的最终成绩。其中,阿里云用不到7分钟(377秒)就完成了100TB的数据排序,打破了Apache Spark的纪录23.4分钟。Sort Benchmark有全球科技公司“计算奥运会”之称,更早之前Hadoop的记录是72分钟。 2016 年 11 月 10 日,Sort Benchmark 在官方网站公布了 2016 年排序竞赛 CloudSort 项目的最终成绩。阿里云以$1.44/TB 的成绩获得 Indy(专用目的排序)和 Daytona(通用目的排序) 两个子项的世界冠军,打破了 AWS 在 2014 年保持的纪录 4.51$/TB。这意味着阿里云将世界顶级的计算能力,变成普惠科技的云产品。CloudSort 又被称为“云计算效率之争”,这项目赛比拼的是完成 100T 数据排序谁的花费更少,也是 Sortbenchmark 的各项比赛当中最具现实意义的项目之一。 那2017年,MaxCompute研发团队并没有闲着,他们到底在这一块标准测试中有哪些进展?本次也会由路璐技术专家为大家同步并介绍这一年来的测试进展。 从ODPS到MaxCompute,从MaxCompute到MaxCompute2.0,产品和技术上都得到很大提升,也很大服务将技术红利让给我们的用户,从计算、存储成本的节省,到开发效率的提升,再到生态开源的对接,MaxCompute一直在成长,那未来的路应该怎么顺应大数据时代潮流,如何满足不断变化的需求,林伟亲自为大家解读。 2017 杭州· 云栖大会 阿里云大数据计算服务(MaxCompute)专场不见不散!
阿里云大学精品课程:深入理解阿里云数加大数据开发套件Data IDE-基本知识 写在最前面 >>>进入了解更多>>>阿里云数加·MaxCompute大数据计算服务. 基于阿里云数加·MaxCompute构建大数据仓库的开发工具利器Data IDE《MaxCompute(原ODPS)开发入门指南——数据开发工具篇》,那么基于Data IDE进行数据开发想必也遇到一些不少的困惑,就自己在培训过程中的一些经验或者说阿里集团内的踩坑之路与大家在此分享,也欢迎拍砖。 大数据仓库业务架构 类似于传统数据仓库,我们都会经历ETL的过程,E-数据抽取,T-数据转换,L-数据装载。但在大数据时代下,数据仓库在数据清洗建模过程中,稍微有些不同,准确的说,他是ELT的过程。首先需要将散落在各地的数据统一进行数据采集到大数据计算服务上,这个过程就是E和L。然后基于大数据计算服务的大存储和高性能计算能力进行数据的清洗和转化,也就是T。具体可以见如下图: 1.数据采集与整合 根据自己公司业务情况,数据大体可以分为云业务系统的数据和本地业务系统的数据。云业务系统数据,可能业务系统已经在云上了,比如数据就在RDS上或者日志数据就在ECS上,这种情况开发成本最低,直接可以使用Log或者Data IDE-数据采集模块进行数据抽取和转载。而本地业务系统数据,可以详见>>>金融云的数据同步处理方式>>> 更多数据上云方式:【MaxCompute(原ODPS)开发入门指南——数据上云篇; 2.数据加工、存储与管理 大数据开发套件Data IDE是基于MaxCompute 之上的数据开发工具,在阿里巴巴集团内部也是身经百战,经历过双11大考,都得益于其背后强大的调度系统。 数据加工清洗建模都需要用户在Data IDE中编辑工作流任务,根据自己的业务逻辑来配置上下游关系和调度时间。支持调度周期类型:天、小时、分钟(5的倍数)、月、周。也就是说在大数据开发套件中如果做数据集成,最小的数据周期颗粒度为5分钟一次。具体可以在调度配置中进行设置: 只需要进行下拉框配置即可设置工作流任务的调度周期和任务执行时间。 3.数据应用与消费 数据的清洗、加工最终被下游系统所消费,主要会进行报表展示或其他更深层次的挖掘分析。那阿里云Quick BI也与MaxCompute无缝进行对接,也支持将制作好的报表嵌入到第三方系统中。阿里云Quick BI如下示意图: 4.数据管理 大家从上面的架构图中也可以看出,数据只有流经MaxCompute才可被记录,包括他的表级别血缘关系和字段级血缘关系。 务必掌握的Data IDE专业术语 项目空间:等同于MaxCompute project,项目空间是大数据开发平台最基本的组织对象,类似于传统数据库的DataBase。大数据开发套件的项目空间,是进行多组织隔离和访问控制的主要边界,也是用户管理表(Table)、资源(Resource)、自定义函数(UDF)、节点(Node)、工作流(WorkFlow)、权限等的基本单元。 在大数据开发平台中,一个项目空间对应绑定一个MaxCompute project。 工作流:工作流是一个DAG图(有向无环图),其描述了作业中多个节点之间的逻辑(依赖关系)和规则(运行约束)。 工作流任务/节点:工作流任务是一个完整的独立调度的整体。工作流节点属于工作流任务的子对象,是数据处理和分析过程的基本单元,每个节点任务对应工作流任务DAG图中的一个节点,其可以是一个SQL Query、命令和MapReduce程序。 节点任务:节点任务也是一个完整的独立调度的整体,也是数据处理和分析过程的基本单元。 依赖关系:描述两个或多个节点/工作流之间的语义连接关系,其中上游节点/工作流的运行状态可以影响下游节点/工作流的运行状态,反之则不成立。 在大数据开发套件中,节点任务在执行时会被实例化,并以MaxCompute实例的形式存在。实例会经历未运行、等待时间/等待资源、运行中、成功/失败几个状态。当天晚上23:30节点转实例! 当天晚上23:30节点转实例!也就是说,在当天23:30之前提交到调度系统的配置项都会转实例即生效,过了这个点提交的任务则需要再隔一天进行生效。这一点务必注意!!!! 资源:资源是大数据开发套件的特有概念,用户可以上传本地自定义的JAR或文件作为资源,在节点运行时调用。如MaxCompute MR需要上传jar包作为资源来进行执行。 角色隔离 在大数据时代,数据是一个公司的生命,在一个团队中如何进行一个角色和权限的隔离,以保障数据的安全性。那Data IDE在角色和权限上也做了很多工作,总体上角色可以分为:组织管理员、项目管理员、开发、运维、部署和访客。具体如下: 项目空间的设置 在阿里云数加·大数据开发套件中,也提供了多项目空间之间的发布流程,但是在业务划分过程中,需要根据自己公司业务情况来定,一般情况下可以按照如下规则来进行项目的配置: 创建单个项目空间:适用于业务较单一,成员角色基本一致,无需严格的经过数据开发>测试>预发>生产等开发流程。 创建开发/生产项目空间:适用于业务相对复杂,又对生产安全性要求很高的,需要经过开发>测试>生产流程。 ↓↓↓↓分割线↓↓↓↓ 之前断断续续写了几篇,也有几篇一直是热文,对大家在开发过程中也起到了一定的帮助作用。总体罗列如下,给大家提供个索引: ① 【数据架构解读】基于阿里云数加StreamCompute和MaxCompute构建的访问日志统计分析; ② 【Best Practice】基于阿里云数加·StreamCompute快速构建网站日志实时分析大屏; ③ 【Best Practice】基于阿里云数加·MaxCompute及Quick BI构建网站用户画像分析; ④ 【MaxCompute(原ODPS)开发入门指南——计量计费篇; ⑤ 【MaxCompute(原ODPS)开发入门指南——数据上云篇; ⑥ MaxCompute(原ODPS)开发入门指南——数据开发工具篇; ---华丽的分割线--- ① 《云数据·大计算:海量日志数据分析与应用》Workshop-入口; ② 《在线用户行为分析:基于流式计算的数据处理及应用》Workshop-入口;
MaxCompute(原ODPS)开发入门指南——数据开发工具篇 写在最前面 >>>进入了解更多>>>阿里云数加·MaxCompute大数据计算服务. 大家在使用大数据计算服务MaxCompute时,最头疼就是我现在已有的数据如何快速上云?我的日志数据如何采集到MaxCompute上?等等。。。具体详见《MaxCompute(原ODPS)开发入门指南——数据上云篇》。 但是数据在MaxCompute上了之后,问题又来了,我怎么基于上面进行快速的数据开发,构建大数据仓库。本文就重点为大家推荐和介绍开发工具:① 大数据开发套件Data IDE; ② MaxCompute Studio。 大数据开发套件Data IDE 大数据开发套件基于MaxCompute强大的计算存储能力,提供多人协作开发能力且支持百万级别任务稳定调度系统的在线开发工具,在阿里巴巴集团内是建设大数据仓库平台的必备工具。 1.工作流设计器 通过拖拽式进行工作流任务的设计,包括上下游节点任务的依赖关系。包括SQL、MR、数据同步、机器学习、shell节点任务等。 2.数据集成 支持常见的数据源集成,提供可视化方式配置和脚本模式,开发者可以根据自己喜好进行选择。 例子:ftp数据同步到MaxCompute的可视化配置界面。如下: 例子:ftp数据同步到MaxCompute的脚本开发模式,包括reader和writer。如下: 3.调度系统 大数据开发套件Data IDE支持调度周期类型:天、小时、分钟(5的倍数)、月、周。也就是说在大数据开发套件中如果做数据集成,最小的数据周期颗粒度为5分钟一次。具体可以在调度配置中进行设置: 只需要进行下拉框配置即可设置工作流任务的调度周期和任务执行时间。 4.运维系统 提供可视化运维界面,完全解放数据开发运维的问题,包括任务的重跑、kill和补数据等操作。 5.数据管理 在大数据开发套件中也提供了表级/字段级的数据血缘管理。同时提供整个组织级别的空间表权限管理,包括权限申请、授权和收回。 详情可以进入了解大数据开发套件Data IDE! MaxCompute Studio 不同于大数据开发套件Data IDE,MaxCompute Studio是阿里云数加MaxCompute提供的本地集成开发环境,MaxCompute Studio 基于 IntelliJ IDEA 平台提供了一套扩展插件,皆在提升MaxCompute 用户的开发体验,给到用户不同开发体验的多种选择。 详情可以进入了解MaxCompute Studio更多信息。 如下为我本地的开发环境界面: 具体的安装配置和使用可以查看如下短视频: MaxCompute Studio安装配置视频 总结 工欲善其事必先利其器。在进行数据开发之前需要根据自己的业务情况、个人喜好来选择正确的大数据开发套件。那么讲这么多,这两个具体在数据开发过程中的差异在哪? 【相同点】 两者都是基于MaxCompute之上的开发者工具,为开发者提供友好的开发体验。 【差异点】 ① 调度系统:Data IDE具有强大且稳定的调度系统,在阿里集团内部稳定保障数据产生多年。适合数据开发者进行搭建大型数据仓库。而MaxCompute Studio更偏向于本地开发和数据分析,是没有自己的调度系统。 ② UDF/MR开发:Data IDE本身不支持UDF/UDF源码开发和编译,只接受jar包资源方式上传的执行;而Studio提供UDF开发、MR开发。 ③ Data IDE大数据开发套件是在线的开发工具,用户只需要能够上网即可进行。而MaxCompute Studio需要安装在本地,故需要对本地的环境有要求。
MaxCompute(原ODPS)开发入门指南——数据上云篇 写在最前面 >>>进入了解更多>>>阿里云数加·MaxCompute大数据计算服务. 根据《MaxCompute(原ODPS)开发入门指南——计量计费篇》的了解,大家清楚了MaxCompute可以做什么,计费模式如何,想必大家也开通了MaxCompute想进行一次POC,但是大家遇到第一个问题一定是我的数据如何上云? 可通过多种方式数据流入MaxCompute MaxCompute(原ODPS)提供了多种通道数据可以流入MaxCompute,包括MaxCompute原生的Tunnel,以及阿里云体系内的Log、DataX和数据集成,以及开源生态中的Flume、Logstash和Fluentd。以下为大家一一道来,大家视各自情况进行选择。 ① MaxCompute Tunnel命令 直接在MaxCompute客户端中使用Tunnel命令进行数据上传,数据在传输过程中都是加密传输的,适用于一次性批量数据导入。 注意的是每一次上传只支持数据上传到一个表或表的一个分区,有分区的表一定要指定上传的分区。 数据上传命令如下: tunnel upload log.txt test_project.test_table/p1="b1",p2="b2"; 如何配置客户端和使用命令: 下载并配置客户端 Tunnel 命令导入数据 更多关于Tunnel upload命令 ② MaxCompute Tunnel SDK 通过 TUNNEL 提供的 SDK 自行编写 Java 工具。 关于如何利用 tunnel SDK 进行上传数据,下面也将通过场景介绍。场景描述:上传数据到 MaxCompute,其中,项目空间为”odps_public_dev”,表名为”tunnel_sample_test”,分区为”pt=20150801,dt=hangzhou”。 详细的Tunnel SDK案例教学 ③ LOG(阿里云日志分析产品) 了解更多关于日志分析产品。 日志服务(Log Service,简称 Log)是针对日志类数据的一站式服务,在阿里巴巴集团经历大量大数据场景锤炼而成。您无需开发就能快捷完成日志数据采集(Logtail)、消费、投递(LogShipper)以及查询分析(LogSearch)等功能,提升运维、运营效率,建立 DT 时代海量日志处理能力。 通常情况下,在使用开源的产品时都需要自己写正则来进行日志采集和结构化,通过Log产品可以进行可视化取词来选择自己需要解析的字段值,同时也提供手工方式输入正则表达式,如下图: 在大家场景中,尝尝需要将日志进行实时采集,然后归档到MaxCompute进行数据分析与挖掘,Log产品覆盖了: Nginx, Apache, Log4J ,Wordpress , Python, NodeJS, 分隔符 (Delimiter, 如 CSV、TSV 等格式)、logstash , ThinkPHP, IIS(Windows 平台,默认格式)/logstash等。>>>常见日志格式 大部分情况下日志数据在写入LogStore后的0.5~1个小时导入到MaxCompute,具体归档的帮助文档详见:>>>Log数据归档到MaxCompute 点击进入:更多关于Log产品使用指南 ④ DTS-数据传输 数据传输(Data Transmission)服务DTS是阿里云提供的一种支持RDBMS(关系型数据库)、NoSQL、OLAP等多种数据源之间数据交互的数据服务。它提供了数据迁移、实时数据订阅及数据实时同步等多种数据传输能力。 创建RDS for Mysql数据实时同步到MaxCompute,实现原理如下: 如上图所示,整个同步过程分为两步: 全量初始化, 这个步骤将RDS MySQL中已经存在的全量数据初始化到MaxCompute中。对于同步的每个表,全量初始化的数据都会独立存储在MaxCompute中的全量基线表中,这个表的默认格式为:源表名_base。例如表 t1,那么全量基线表在MaxCompute中存储的表名为:t1_dts_base。这个存储表名前缀可以根据需要变更,您可以在配置任务时,修改表在MaxCompute存储的名称。 增量数据同步,这个步骤将RDS MySQL产生的增量数据数据实时同步到MaxCompute中。并存储在增量日志表中,每个同步表对应一个增量日志表。增量日志表在MaxCompute中存储的表名的默认格式为:源表名_log。这个存储表名前缀可以根据需要变更,您可以在配置任务时,修改表在MaxCompute存储的名称。 只支持表的同步,不支持其他非表对象如视图的同步。 建议大家可以尝试下使用DTS来做数据的增量同步。具体详细的操作文档详见:创建RDS到MaxCompute数据实时同步作业 ⑤ 开源产品:Flume / Logstash / Fluentd 目前开源产品都是提供output插件将数据写入DataHub(目前免费公测中)再数据归档到MaxCompute上。如下图: 个人觉得这几款开源产品与阿里云自研的Log日志分析产品在日志采集上类似,但是Flume、Logstash、Fluentd需要一定技术能力的同学方可快速上手,需要手动编写日志格式化的正则表达式,在这一点上,让一些新手趋之若鹜。大家可以考虑下Log直接上手。 Apache Flume是一个分布式的、可靠的、可用的系统,可用于从不同的数据源中高效地收集、聚合和移动海量日志数据到集中式数据存储系统,支持多种Source和Sink插件。Apache Flume的Datahub Sink插件将日志数据实时上传到Datahub。具体操作详见:通过Flume采集数据至MaxCompute Logstash是一种分布式日志收集框架,非常简洁强大,经常与ElasticSearch,Kibana配置,组成著名的ELK技术栈,非常适合用来做日志数据的分析。 阿里云流计算为了方便用户将更多数据采集进入DataHub,提供了针对Logstash的DataHub Output/Input插件。具体操作详见:通过Logstash采集数据至MaxCompute Fluentd也是大家经常接触到的分布式日志采集系统,该插件是基于Fluentd开发的输出插件,主要是将采集到的数据写入DataHub。该插件遵守Fluentd输出插件开发规范,安装方便,可以很方便地将采集得到的数据写到DataHub。具体操作详见:通过Fluentd采集数据至MaxCompute [总结]三款产品都是不错的选择,需要根据个人使用习惯进行选择,我自己也习惯使用Logstash所以也写过一些真是case的文章《构建网站日志实时运营大屏》,从日志采集-->Logstash采集-->DataHub技术栈。 ⑥ DataX、数据集成(Data IDE数据采集) 之所以将DataX和Data IDE数据采集放在一起给大家介绍,是因为两者之间密不可分,但是又有着巨大差别。 DataX阿里巴巴集团内被广泛使用的离线数据同步工具/平台,目前已经开源DataX。具体使用可以详见:DataX配置及使用,如下图: Data IDE是基于MaxCompute之上的大数据开发套件,其中数据采集模块完美的支持了DataX的所有数据通道。可以进入详细了解:数据采集模块 【相同点】:Data IDE数据采集模块是基于DataX平台之前构建的可视化配置+调度系统,支持的数据通道完全一致。【不同点】:DataX需要自己本机或服务器上配置josn文件和自己编写crontab进行调度运维。 建议:大家直接使用 大数据开发套件-数据采集工具,因为大数据开发套件Data IDE提供了一整套的数据仓库工具解决方案,从数据采集到数据加工以及后续的调度运维等。关键是免费!免费!免费! * 支持的数据通道: 数据源分类 数据源类型 抽取(Reader) 导入(Writer) 支持方式 支持类型 大数据存储 MaxCompute(对应数据源名称是 ODPS) 支持 支持 向导/脚本 阿里云 大数据存储 AnalyticDB(对应数据源名称ADS) 不支持 支持 向导/脚本 阿里云 关系型数据库 MySQL 支持 支持 向导/脚本 阿里云/自建 关系型数据库 SQL Server 支持 支持 向导/脚本 阿里云/自建 关系型数据库 PostgreSQL 支持 支持 向导/脚本 阿里云/自建 关系型数据库 Oracle 支持 支持 向导/脚本 自建 关系型数据库 DRDS 支持 支持 向导/脚本 阿里云 关系型数据库 DB2 支持 支持 脚本 自建 关系型数据库 达梦(对应数据源名称是 dm) 支持 支持 脚本 自建 关系型数据库 RDS for PPAS 支持 支持 脚本 阿里云 MPP HybridDB for MySQL 支持 支持 向导/脚本 阿里云 MPP HybridDB for PostgreSQL 支持 支持 向导/脚本 阿里云 非结构化存储 OSS 支持 支持 向导/脚本 阿里云 非结构化存储 HDFS 支持 支持 脚本 自建 非结构化存储 FTP 支持 支持 向导/脚本 自建 NoSql HBase 支持 支持 脚本 阿里云/自建 NoSql MongoDB 支持 支持 脚本 阿里云/自建 NoSql Memcache 不支持 支持 脚本 阿里云/自建Memcached NoSql Table Store(对应数据源名称是OTS) 支持 支持 脚本 阿里云 NoSql LogHub 不支持 支持 脚本 阿里云 NoSql OpenSearch 不支持 支持 脚本 阿里云 NoSql Redis 不支持 支持 脚本 阿里云/自建 性能测试 Stream 支持 支持 脚本
MaxCompute(原ODPS)开发入门指南 写在最前面 >>>进入了解更多>>>阿里云数加·MaxCompute大数据计算服务. 近期介绍大量数据上云用户关于MaxCompute的一些问题,现就MaxCompute产品线的一些工具栈可以和大家进行交流,也欢迎大家拍砖和来扰,一起学习一起进步!也希望能够在帮助到大家! 系列文章会涉及到的内容 0.MaxCompute概述:是什么?可以做什么?收费模式? 1.数据上云工具介绍:Log、Logstash、Flume、Fluentd、DataX等 2.MaxCompute开发工具:Data IDE和MaxCompute Studio 3.数据分析展现工具概述:Quick BI MaxCompute概述 MaxCompute(原ODPS)是一项大数据计算服务,它能提供快速、完全托管的PB级数据仓库解决方案,使您可以经济并高效的分析处理海量数据。 MaxCompute是什么 MaxCompute 是面向大数据处理的云计算服务,主要提供结构化和非结构化数据的存储和计算服务,是阿里巴巴云计算整体解决方案中最核心的主力产品之一。 在分析海量数据场景下,由于单台服务器的处理能力限制,数据分析者通常采用分布式计算模式。但分布式的计算模型对数据分析人员提出了较高的要求,且不易维护。使用分布式模型,数据分析人员不仅需要了解业务需求,同时还需要熟悉底层计算模型。MaxCompute 的目的是为用户提供一种便捷的分析处理海量数据的手段。用户可以不必关心分布式计算细节,从而达到分析大数据的目的。 MaxCompute 已经在阿里巴巴集团内部得到大规模应用,例如:大型互联网企业的数据仓库和 BI 分析、网站的日志分析、电子商务网站的交易分析、用户特征和兴趣挖掘等。 进入https://www.aliyun.com/solution/customer选择大数据,了解更多MaxCompute用户案例。 MaxCompute可以做什么 从产品设计角度,MaxCompute 主要面向三类大数据处理场景:基于SQL 构建大规模数据仓库和企业BI 系统,基于MapReduce 和BSP 的分布式编程模型开发大数据应用,基于统计和机器学习算法开发大数据统计模型和数据挖掘。在后面“典型场景”一节将会给出这些场景的应用实例。 从服务角度,MaxCompute 采用抽象的作业处理框架将不同场景的各种计算任务统一在同一个平台之上,共享安全、存储、数据管理和资源调度,为来自不同用户需求的各种数据处理任务提供统一的编程接口和界面。MaxCompute 这种集成多种不同大数据处理应用场景的设计思想领先于业界同类云计算产品,为大数据应用开发提供一个非常强大的平台。 墨迹天气:日志数据分析 小红唇:构建大数据仓库 美甲帮:业务数据化运营 汇合营销:大数据精准营销 更多 MaxCompute怎么收费? 关于MaxCompute的收费问题也是大家近期最为关心的话题,下面为大家一一解答。更多关于计量计费说明。 目前,MaxCompute以项目project为计费单元,对project内的数据存储、计算(目前只是SQL)、数据下载(走公网收费)进行收费,计费周期都是当天出前一天的账单。 数据存储-收费 0< 存储量 < 512MB: 收取当前项目0.01元费用。 存储量 > 512MB: 基础价格 大于100GB部分 大于1TB部分 大于10TB部分 大于100TB部分 1PB以上部分 0.0192元/GB/天 0.0096元/GB/天 0.0084元/GB/天 0.0072元/GB/天 0.006元/GB/天 请通过工单联系我们 例如用户某个项目的存储为50TB,则每天收取的费用为: 100GB*0.0192元/GB/天 --基础价格 +(1024-100)GB*0.0096元/GB/天 --大于100GB部分价格 +(10240-1024)GB*0.0084元/GB/天 --大于1TB部分价格 +(50*1024-10240)GB*0.0072元/GB/天 --大于10TB部分价格 =383.12元/天 由于MaxCompute会对原始数据进行压缩,那么计费依据也是按照压缩后的数据量进行计算,一般压缩比在5倍左右。 计算计费(后付费/预付费) 后付费:以作业实际消耗量作为统计指标,在执行后进行收费。 所谓按I/O后付费是指:用户每执行一条SQL作业,MaxCompute将根据该作业的输入数据及该SQL的复杂度进行计费。 一次SQL计算费用 = 计算输入数据量(SQL语句实际扫描数据量) SQL复杂度 SQL价格(0.3元/GB),其中复杂度一般先统计SQL语句中的关键字再进行折算,也可以使用cost sql 进行估算。 SQL关键字个数 = Join个数 + Group By个数 + Order By个数 + Distinct个数 + 窗口函数个数 + max(insert into个数-1, 1) 在Data IDE中会针对每个SQL在执行前会进行一次计算消费的预估,如下图: 预付费:包年包月购买CU方式,10CU起售。 1CU = 1CPU + 4GB内存,售价为 150元/月。 下载计费 对于公网或者跨Region的数据下载,MaxCompute将按照下载的数据大小进行计费(也就是说数据下载走内网模式且在当前region内是不计费的)。计费公式为: 一次下载费用 = 下载数据量 * 下载价格 针对不同网络环境(访问 MaxCompute 及其 Tunnel 服务的连接地址)的收费模式详细说明如下: 区域 网络 MaxCompute服务连接 MaxCompute tunnel连接 下载是否收费 华东1 公网 http://service.odps.aliyun.com/api http://dt.odps.aliyun.com 是 华东1 经典网络 http://odps-ext.aliyun-inc.com/api http://dt-ext.odps.aliyun-inc.com 否 华东1 VPC http://odps-ext.aliyun-inc.com/api http://dt-ext.odps.aliyun-inc.com 是 华东2 公网 http://service.odps.aliyun.com/api http://dt.odps.aliyun.com 是 华东2 经典网络 http://odps-ext.aliyun-inc.com/api http://dt.eu13.odps.aliyun.com 否 华东2 VPC http://odps-ext.aliyun-inc.com/api http://dt-ext.eu13.odps.aliyun-inc.com 否 华北2 公网 http://service.odps.aliyun.com/api http://dt.odps.aliyun.com 是 华北2 经典网络 http://odps-ext.aliyun-inc.com/api http://dt-ext.nu16.odps.aliyun-inc.com 否 华北2 VPC http://odps-ext.aliyun-inc.com/api http://dt-ext.nu16.odps.aliyun-inc.com 否 其他 公网 http://service.odps.aliyun.com/api http://dt.odps.aliyun.com 是 其他 经典网络 http://odps-ext.aliyun-inc.com/api http://dt-ext.odps.aliyun-inc.com 否 其他 VPC 不支持,需要用户走公网访问 不支持,需要用户走公网访问 -- 如上述还不能帮助到大家,大家可以进入计量计费详细说明进行了解。也可以通过如下钉钉扫码方式进入,咨询我们的售前工程师。
云栖大会成都峰会大数据Workshop入口 《在线用户行为分析:基于流式计算的数据处理及应用》 钉钉扫码进入阿里云数加流计算和DataV可视化交流群。 流数据采集:日志数据解析及上传 实时数据分析:海量日志数据多维透视 流数据处理:通过StreamSQL分析用户行为 数据可视化:构建实时动态运营数据分析大屏 该课程是针对一个网站实时产生的Nginx日志进行分析,深度挖掘用户的实时行为,为运营提供策略。包含阿里云DataHub、流式计算引擎StreamCompute和酷炫的DataV可视化大屏。 专场议程介绍 在《云数据·大计算:海量日志数据分析与应用》workshop中大家都可以体验到离线数据处理的魅力,但是往往在日常中,数据会随着时间的递增价值却在递减,那么就需要实时的在线分析,极大挖掘数据背后的价值。本场《在线用户行为分析:基于流式计算的数据处理及应用》将为你揭秘流式数据是如何处理、加工和展示。 准备工作 为保证大家能够在Workshop现场能够顺利开展实验教程,需要大家根据入场时领取的“云中沙箱操作指南”A4纸进行操作,获取实验账号。 详细教程 流数据采集:日志数据解析及上传 实时数据分析:海量日志数据多维透视 流数据处理:通过StreamSQL分析用户行为 数据可视化:构建实时动态运营数据分析大屏 待本次Workshop结束后,阿里云数加小二会快马加鞭将各位讲师的PPT更新到本文中,供大家学习并掌握阿里云数加。 也请大家持续关注我们阿里云数加的其他场Workshop《云数据·大计算:海量日志数据分析与应用》。后续我们会持续不断的推新,普惠阿里云大数据的能力。
大数据workshop:《在线用户行为分析:基于流式计算的数据处理及应用》之《数据可视化:构建实时动态运营数据分析大屏》篇 实验背景介绍 了解更多2017云栖大会·成都峰会 TechInsight & Workshop. 本手册为云栖大会Workshop之《在线用户行为分析:基于流式计算的数据处理及应用》场的《数据可视化:构建实时动态运营数据分析大屏》篇所需。主要帮助现场学员熟悉并掌握DataV数据可视化的操作和使用。 实验涉及大数据产品 DataV数据可视化 前提准备 必备条件:已经从云中沙箱中获取了实验所需的阿里云账号和密码。 实验目标 本实验将会实现如下的网站实时流量统计大屏。 创建可视化大屏 经过上述《流数据处理:通过StreamSQL分析用户行为》章节创建的流式任务,我们可以创建酷炫的可视化大屏展示网站实时流量统计情况,为了便于大家快速掌握DataV的使用,请使用事先准备好的AnalyticDB数据源。 进入DataV管理控制台 点击进入DataV可视化管理控制台。 添加数据源 step1:进入DataV管理控制台,点击左侧菜单中我的数据。 step2:点击+添加数据,跳出新建数据对话框。 step3:配置数据类型为AnalyticDB、名称、域名、用户名/密码、端口和数据库,并点击测试连接。 具体数据源配置项如下: 数据源类型:AnalyticDB 名称:workshop 域名:workshop-demo-114ae71f.cn-hangzhou-1.ads.aliyuncs.com 用户名:LTAICO76WC1rREmW 密码:a89c1T96KMA2tOrEnb0SiBOA7GMMP3 端口:10078 数据库:workshop_demo 创建DataV可视化大屏 step1:点击左侧我的可视化,进入配置大屏操作。 step2:点击流式数据实战进入大屏编辑界面。 此处大屏模板由永翎(DataV产品经理)亲自操刀为此次Workshop量身定制,大家直接进入配置界面即可。 step3:依次配置PV变化趋势(折线图)、访问设备来源(饼图)、实时访问数量(数字翻牌器)、2D平面地图和来源站点排名(轮播列表柱状图)。 step3.1:点击折线图,进入配置PV变化趋势(折线图)页面。 首先配置样式,由于输入的数据格式为2014021206,但是我们需要在折线图中显示各个小时的数据,格式为02时的样式,那么需要在样式>x轴的轴标签中进行设置数据格式和显示格式。 数据格式:%Y%m%d%H(需要手工输入并回车确认) 显示格式:选择02(时) 其次,开始配置数据如下: 字段x映射为pv_time,y映射为pv_count,数据库类型选择数据库,选择数据库为workshop(刚创建的数据源名称)在SQL底部勾选自动更新,设置每5秒请求一次。编写SQL如下。 附:SQL说明 SELECT pv_time, pv_count FROM pv_perhour; step3.2:同样点击访问设备来源(饼图)进入数据配置页面,配置信息如下。 字段x映射为pv_device,y映射为pv_count,数据库类型选择数据库,选择数据库为workshop(刚创建的数据源名称)在SQL底部勾选自动更新,设置每5秒请求一次。编写SQL如下。 附:SQL说明 SELECT pv_device, pv_count, pv_date FROM device_dist; step3.3:配置实时访问数量(数字翻牌器)如下。 字段value映射为pv_count,数据库类型选择数据库,选择数据库为workshop(刚创建的数据源名称),在SQL底部勾选自动更新,设置每5秒请求一次。编写SQL如下。 SELECT pv_count, pv_time FROM pv_day; step3.4:点击中间的2D地图,并点击进入区域热力层,具体配置如下。 字段映射关系通过在SQL中利用as方式声明,其中,数据库类型选择数据库,选择数据库为workshop(刚创建的数据源名称),在SQL底部勾选自动更新,设置每5秒请求一次。编写SQL如下。 select aaa.region_code, aaa.region_count as value, bbb.id as id, bbb.name, bbb.lat, bbb.lng, concat(bbb.name, ": ", aaa.region_count) as info from region_map aaa join province_code bbb on aaa.region_code = bbb.province_name; step3.5:同上,点击进入流式气泡层,具体配置如下。 字段映射关系通过在SQL中利用as方式声明,其中,数据库类型选择数据库,选择数据库为workshop(刚创建的数据源名称),在SQL底部勾选自动更新,设置每5秒请求一次。编写SQL如下。 select aaa.region_code, aaa.region_count as value, bbb.id as id, bbb.name, bbb.lat as lat, bbb.lng as lng, concat(bbb.name, ": ", aaa.region_count) as info from region_map aaa join province_code bbb on aaa.region_code = bbb.province_name; step3.6:点击来源站点排名(轮播列表柱状图),点击进入流式气泡层,具体配置如下。 字段映射关系通过在SQL中利用as方式声明,其中,数据库类型选择数据库,选择数据库为workshop(刚创建的数据源名称),在SQL底部勾选自动更新,设置每5秒请求一次。编写SQL如下。 select pv_count as value, concat(pv_refer, "---", pv_count) as content from refer_dist; step4:点击右上角预览,查看大屏效果,会看到数据实时的刷新。 发布大屏 通过发布操作可以将制作好的大屏分享别人查看。 step1:点击右上角发布,弹出发布对话框。 step2:打开发布按钮会生成链接. 复制生成的URL即可共享你的大屏作品,观看制作的流式数据大屏。其他严重密码、验证Token可以参考更多教程来完成,此处将不赘述。 到此为止,相信大家一定程度掌握了阿里云数加流式处理的解决方案,包括DataHub、StreamCompute到最后的DataV大屏展示。更多内容请大家持续关注文章的更新和后续的workshop内容出品。
大数据workshop:《在线用户行为分析:基于流式计算的数据处理及应用》之《流数据处理:通过StreamSQL分析用户行为》篇 实验背景介绍 了解更多2017云栖大会·成都峰会 TechInsight & Workshop. 本手册为云栖大会Workshop之《在线用户行为分析:基于流式计算的数据处理及应用》场的《流数据处理:通过StreamSQL分析用户行为》篇所需。主要帮助现场学员熟悉并掌握阿里云流计算StreamCompute的操作和使用。 实验涉及大数据产品 阿里云流计算StreamCompute 前提准备 必备条件:如果您已经创建了StreamCompute Project,即可跳过创建StreamCompute项目空间章节,直接进入通过StreamSQL分析用户行为章节。 创建StreamCompute项目空间 目前阿里云流计算StreamCompute处于邀测阶段,为让大家深度体验到StreamCompute的便利性,在实验开始之前,幕后码农已为大家开通。 step1:保证账号在登录状态,点击进入阿里云流计算首页。 step2:点击创建项目,跳出创建项目对话框。 step3:填写项目名称、项目备注,点击创建。创建项目空间成果后,系统会自动刷新进入如下页面。 step4:创建项目空间成果后,系统会自动刷新进入如下页面,并点击开始使用进入流计算。 项目名需要字母或下划线开头,只能包含字母下划线和数字。 【注意】建议项目名称与DataHub Project规则保持一致为workshop_abc,其中abc为账号后三位数。 过StreamSQL分析用户行为 流计算角授权 step1:进入 阿里云流计算开发平台,点击前往授权。 step2:在云资源访问授权页面,点击同意授权。 编写StreamSQL分析数据 step1:点击顶部菜单栏中的开发,进入开发页面。 step2:右键选择新建文件夹,在弹出框中填写文件夹名称为weblog(可根据需求命名),点击创建。 step3:在新建的weblog文件夹上右键选择新建作业,在新建作业弹出框中命名作业名称为workshop(可根据需求命名),点击新建。 step4:修改代码备注信息,进入编写StreamSQL开始分析数据。 step5:将DataHub Topic作为“输入表引用”,具体说明如下: 为了大家能够体验流式计算的实时计算能力,在下一章节大屏中也能具象体会到数据的实时刷新,本workshop特意为大家准备了一个实时产生日志的DataHub Topic。大家直接引用即可。 CREATE STREAM TABLE ods_log ( remote STRING, ident STRING, auth STRING, dt STRING, method STRING, requestpath STRING, httpversion STRING, code STRING, bytes STRING, referrer STRING, agent STRING, city STRING, province STRING ) WITH ( type='datahub', endpoint='http://dh-cn-hangzhou-internal.aliyuncs.com', accessId='LTAICO76WC1rREmW', accessKey='a89c1T96KMA2tOrEnb0SiBOA7GMMP3', projectName='workshop', topic='nginx_log' ); step6:需要对源头DataHub的数据进行清洗和加工。逻辑如下: 创建临时表 CREATE TMP TABLE adm_log ( remote STRING, identity STRING, device STRING, dt STRING, method STRING, url STRING, httpversion STRING, code STRING, bytes STRING, referrer STRING, agent STRING, city STRING, province STRING ); 创建处理逻辑 INSERT INTO adm_log SELECT remote, CASE WHEN TOLOWER(agent) RLIKE '(bot|spider|crawler|slurp)' THEN 'crawler' WHEN TOLOWER(agent) RLIKE 'feed' OR requestpath RLIKE 'feed' THEN 'feed' WHEN TOLOWER(agent) NOT RLIKE '(bot|spider|crawler|feed|slurp)' AND agent RLIKE '^\"[Mozilla|Opera]' AND requestpath NOT RLIKE 'feed' THEN 'user' ELSE 'unknown' END AS identity, CASE WHEN TOLOWER(agent) RLIKE 'android' THEN 'android' WHEN TOLOWER(agent) RLIKE 'iphone' THEN 'iphone' WHEN TOLOWER(agent) RLIKE 'ipad' THEN 'ipad' WHEN TOLOWER(agent) RLIKE 'macintosh' THEN 'macintosh' WHEN TOLOWER(agent) RLIKE 'windows phone' THEN 'windows_phone' WHEN TOLOWER(agent) RLIKE 'windows' THEN 'windows_pc' ELSE 'unknown' END AS device, dt, method, requestpath, httpversion, code, bytes, regexp_extract(referrer, '^[^/]+://([^/]+){1}') as referrer, agent, city, province FROM ods_log WHERE requestpath NOT LIKE '^[/]+wp-'; --wp来自于主体请求的其他附加请求 step7:统计每天的实时浏览量pv的计算逻辑分别如下。 统计每小时的实时浏览量pv、统计各设备实时访问量、统计请求来源分布、统计热力图分布的计算逻辑此次操作中将不涉及,讲师会深度解析SQL处理逻辑,待大会结束后会统一将源码在此贴中披露供大家学习。请认证听讲师分享他的使用之道哦~~ 每一个计算逻辑都需要“输出表引用”,即引用上一章节《实时数据分析:海量日志数据多维透视》创建的AnalyticDB表。特别注意需要替换自建创建的输出表名。 统计每天的实时浏览量pv SQL逻辑如下: CREATE RESULT TABLE pv_day ( pv_time STRING, pv_count BIGINT, PRIMARY KEY (pv_time) ) WITH ( type='ads', url='jdbc:mysql://workshop-demo-114ae71f.cn-hangzhou-1.ads.aliyuncs.com:10078/workshop_demo', username='LTAICO76WC1rREmW', password='a89c1T96KMA2tOrEnb0SiBOA7GMMP3', tableName='pv_day_620' --记得替换成自己的AnalyticDB表名 ); REPLACE INTO pv_day SELECT SUBSTR(dt, 1, 8) as pv_time, COUNT(1) as pv_count FROM adm_log GROUP BY SUBSTR(dt, 1, 8); 参数配置 为了保障大家在workshop中的流式任务落在实验专有的集群中,需要加入galaxy.version参数。 点击右侧作业参数展开配置,加入参数galaxy.version=1.4.13.678即可。如下: 上线StreamSQL作业 在日程代码开发中,作业上线之前都会有调试,关于流计算作业的调试说明可详见流计算官方文档(点击更多),此处不再赘述。 step1:在数据开发中点击上线,即可完成StreamCompute作业上线工作。 step2:在上线作业弹出框中点击上线。 启动作业 通过上述步骤将已经创建好的StreamSQL作业提交至集群线上,还需要在运维中进行启动作业,方可执行流式作业。 step1:点击顶部菜单栏中的运维进入运维中心。 step2:找到自己的流式作业workshop,点击操作栏中的启动。 step3:在启动作业对话框中,点击按以上配置启动。 通过上述步骤作业处于启动中,直至状态显示运行,表示作业上线并启动成功。 step4:点击任务操作栏中的查看进入运维大屏查看任务概况。 step5:在作业仪表盘中开启实时刷新,并关注数据输入和数据输出,如下图显示正常表示流式任务处理正常。 开启实时刷新后,低下的监控图会由于作业提交集群执行过程有所1分钟左右延迟刷出。 确认数据产生 作业在运行中,可以通过在DMS for AnalyticDB中进行select查看数据产生情况。 step1:进入DMS for AnalyticDB并使用阿里云账号进行登录。 step2:选择进入区域华北2,继而点击操作栏中的进入,进入workshop_demo数据库。 step3:点击顶部SQL窗口进入SQL编辑视窗。 step4:编辑SQL查看数据产生情况。 可以尝试不断的执行该sql你会发现数据在不断的增加。 SQL代码如下: SELECT * from pv_day_620;
实验背景介绍 了解更多2017云栖大会·成都峰会 TechInsight & Workshop. 本手册为云栖大会Workshop之《在线用户行为分析:基于流式计算的数据处理及应用》场的《实时数据分析:海量日志数据多维透视》篇所需。主要帮助现场学员熟悉并掌握阿里云数加·分析型数据库AnalyticDB的操作和使用。 实验涉及大数据产品 分析型数据库AnalyticDB 前提准备 必备条件:确保已经获取到实验所需的阿里云账号和密码。 创建AnalyticDB表 通过DMS创建AnalyticDB数据表可以通过可视化建表和SQL窗口建表两种模式。 1.可视化建表 step1:进入DMS for AnalyticDB并使用阿里云账号进行登录。 step2:选择进入区域华北2,继而点击操作栏中的进入,进入workshop_demo数据库。 step3:根据自己获取的阿里云账号后三位数字选择进入对应表组。 【说明】如当前云账号为train00620@aliyun-inc.com,那么选择进入表组workshop_620。 step4:右键对应的表组,选择新建表进入可视化创建表模式。 step5:配置表名、字段名称、数据类型、主键,选择对应表组、一级分区列和更新方式,如下图所示。 其中表组选择自己云账号对应的表组,一级分区列选择为pv_time,分区方式中的哈希分区数为8. 在表属性中表组选择自己账号所对应的表组,表名为pv_abc(abc同为账号后三位数字),如pv_day_620。因为表名在同一个AnalyticDB数据库中应全局唯一。 step6:在新建表页面底部,点击保存按钮。 step7:在提交变更弹出框中点击确定按钮,直至提示“变更执行成功”,如下图。 2.通过SQL窗口创建表 也可以通过DDL模式创建天浏览量pv的表,pv_day_abc(同上,abc为账号后三位数字)。 step1:点击顶部菜单栏中的SQL窗口,进入DDL模式。 step2:在SQL窗口中依次复制并执行如下SQL代码。 建表SQL如下:(其中需要注意自己的表名、一级分区列以及建表所属的表组tablegroup属性。) --统计当天实时浏览量pv CREATE TABLE pv_day_620 ( pv_time varchar NOT NULL , pv_count bigint NOT NULL , primary key (pv_time) ) PARTITION BY HASH KEY(pv_time) PARTITION NUM 8 TABLEGROUP workshop_620 OPTIONS(UPDATETYPE='realtime') ; step3:右键对应的表组,选择刷新查看已经创建成功的表。 由于时间关系,关于区域访问量、按照小时统计浏览量、按设备统计浏览量和统计请求来源量的建表将不在此进行动手操作,但是讲师会给大家讲解。workshop结束后,会将所有指标统计过程的代码开发给大家进行体验。 >>>点击进入《流数据处理:通过StreamSQL分析用户行为》篇
实验背景介绍 了解更多2017云栖大会·成都峰会 TechInsight & Workshop. 本手册为云栖大会Workshop之《在线用户行为分析:基于流式计算的数据处理及应用》场的《流数据采集:日志流数据解析及上传》篇所需。主要帮助现场学员熟悉并掌握阿里云DataHub的操作和使用。 实验涉及大数据产品 阿里云DataHub 前提准备 必备条件: 已经从云中沙箱中获取了实验所需的阿里云账号和密码。 点击下载实验数据,体验阿里云DataHub。 如果您已经创建了DataHub Project,即可跳过创建DataHub Topic章节,直接进入创建DataHub Topic章节。 创建DataHub Project 阿里云DataHub默认对所有云账号为开通状态,只需要创建项目所需的Project和Topic即可。 阿里云DataHub project名称是全局唯一的,建议大家本次实验按照workshop_abc的规则来命名,abc为您获取的云账号后三位数字。如获取云账号为train00620@aliyun-inc.com,那么project名称命名为workshop_620。 step1:进入阿里云DataHub并使用阿里云账号进行登录。 step2:点击右上角创建Project。 step3:填写Project名称和描述,点击创建,如下图所示,表示DataHub Project已经创建成功。 创建DataHub Topic 已经创建了Project的用户可以直接按照此步骤来实现创建DataHub Topic进而进入实验。 step1:保证账号在登录状态,点击已创建project操作栏中的查看进入project。 step2:进入DataHub Project,点击右上角创建Topic。 step3:在创建Topic弹出框中配置相关信息,继而点击创建。 上传csv数据 确保阿里云账号处于登录状态,并处在阿里云DataHub控制台。 step1:切换至数据采集tab页中,选择并点击文件上传。 step2:在上传文件弹出框中双击DataHub Project进入创建的Topic,选择相关配置项并点击选择选择文件。 跳过首行选项中配置为否,文件编码选择为utf-8. step3:在选择文件弹出框中,选择已经下载的 tmall_user_brand.csv文件,点击开始上传文件,直至提示框显示成功即可。 数据抽样 完成本地数据上传后,可以通过如下方式来确认数据的导入情况。 step1:确保阿里云账号处于登录状态。在DataHub控制台左侧切换至项目管理tab页面,进而点击项目名称后的查看,进入project。 step2:点击Topic操作栏中的查看,进入具体的DataHub Topic中。 step3:点击通道操作栏中的数据抽样,进行查看数据上传情况。 step4:选择指定时间为小于或者等于数据上传时间,并点击数据抽样进行数据预览。 数据抽样页面会根据配置的条件进行展示已经上传的数据。如上图所示,表示成功上传了csv文件数据,有兴趣的同学也可以进行对比。 >>>点击进入《实时数据分析:海量日志数据多维透视》篇
阿里云MVP Meetup 大数据Workshop入口 《云数据·大计算:海量日志数据分析与应用》 欢迎大家扫码加入阿里云数加MaxCompute交流群,后续相关项目支持都可以进行群里提问,数加小二也第一时间帮助解决。 数据采集:日志数据上传 数据加工:用户画像 数据分析展现:可视化报表及嵌入应用 该课程是基于大数据时代日志分析的基础需求的基础上,告知用户如果通过阿里云数加大数据解决方案来实现自己网站日志的用户画像。包括数据采集、数据加工以及数据最终的展现。 专场议程介绍 在大数据时代,无论是基于自建大数据体系还是在阿里云数加上来完成网站日志的分析和处理,基本都离不开数据采集->数据加工、清洗->数据展现的方法论,该专场议程深入浅出的介绍了阿里云数加大数据下,数据采集的支持能力、阿里巴巴集团内基于MaxCompute构建大数据数仓的踩坑之路以及解决云上数据最后一公里的BI报表展现等问题。 准备工作 为保证大家能够在Workshop现场能够顺利开展实验教程,需要大家根据如下教程来进行相关准备工作。 实验环境准备 详细教程 数据采集:日志数据上传 数据加工:用户画像 数据分析展现:可视化报表及嵌入应用
大数据workshop:《云数据·大计算:海量日志数据分析与应用》之《社交数据分析:好友推荐》篇 实验背景介绍 了解更多2017云栖大会·成都峰会 TechInsight & Workshop. 本手册为云栖大会Workshop《云计算·大数据:海量日志数据分析与应用》的《社交数据分析:好友推荐》篇而准备。主要阐述如何在大数据开发套件中使用MR实现好友推荐。 MapReduce应用场景 搜索:网页爬取、倒排索引、PageRank; Web访问日志分析:分析和挖掘用户在web上的访问、购物行为特征,实现个性化推荐; 文本统计分析:比如莫言小说的WordCount、词频TFIDF分析;学术论文、专利文献的引用分析和统计; 海量数据挖掘:非结构化数据、时空数据、图像数据的挖掘; 机器学习:监督学习、无监督学习、分类算法如决策树、SVM等; 自然语言处理:基于大数据的训练和预测;基于语料库构建单词同现矩阵,频繁项集数据挖掘、重复文档检测等; 广告推荐:用户点击(CTR)和购买行为(CVR)预测。 涉及大数据产品 大数据开发套件 好友推荐MapReduce算法分析 现在,社交网络已经成为影响力巨大的信息平台,社交网站中,用户可以通过“你可能感兴趣的人”途径增加交友方式。“你可能感兴趣的人”也称作“好友推荐”, 它主要是通过查找两个非好友之间的共同好友情况来实现的。下面,将通过一个例子,简单介绍通过MapReduce的方式实现好友推荐功能。 例如:A,B,C,D,E五个人的好友关系如下图,其中实线表示互为好友关系。那么,如何获取两个不是好友的两个人之间的好友数?并以此为参考,进行对用户推荐陌生人。 首先,将好友关系分配到两个Map进行处理,其中每个Map包含3条好友关系。对每一条好友关系进行拆分,若Key中的两个人为朋友,则记录value值为0,否则value值为1。将拆分的结果进行排序,其中(A B)和(B A)作为同一个key(A B)。 然后,将分别对两个Map处理的记录进行初步合并,若两个记录的Key值相同且每条记录的Value都不为0,则Value值加1。注意:在Combine阶段,必须保留Value为0的记录,否则,在Reduce阶段,获取的结果会出错。 最后,通过Reduce方式,合并两个Map处理的Combine结果。首先,若两个记录的Key值相同且每条记录的Value都不为0,则Value值加1;然后,将Value值为0的记录删除;最后,获取不为好友的两个用户之间的公共好友数:Key为两个不为好友的用户,Value是两个不是好友的用户之间的共同好友数。社交网站或者APP可以根据这个数值对不是好友的两个用户进行推荐。 实验详情 下载实验数据 点击下载实验数据:friends_in_data.csv和MR jar包:friends_mr.jar至本地。 进入大数据开发套件 确保阿里云账号处于登录状态。 step1:点击进入大数据开发套件项目列表。 step2:点击已经创建的项目空间名称,进入大数据开发套件。 新建数据表 继上实验《数据采集:日志数据上传》和《数据加工:用户画像》中已经新建脚本文件,可以直接切换至脚本开发tab下,双击打开create_table_ddl脚本文件。若无新建脚本文件可通过如下详细步骤进行创建脚本文件。 附建表SQL drop table if exists dual;--创建系统dual create table dual(id bigint);--如project中不存在此伪表,则需创建并初始化数据 insert overwrite table dual select count(*)from dual;--向系统伪表初始化数据 ---创建好友推荐MR的数据输入表.其中uid表示某个用户;friends表示uid用户的好友 create table friends_in (uid string, friends string); ---创建好友推荐MR的数据输出表.其中userA表示某个用户;userB表示不是userA的用户,cnt表示userA和userB之间的共同好友数。 create table friends_out (userA string, userB string, cnt bigint); 导入本地数据 step1:完成输入和输出表的创建后,点击顶部功能栏中的导入,导入本地数据。然后,打开本地保存的文件friends_in_data.csv(点击本小节顶部的附件名“friends_in_data.csv” ,下载本次实验的测试数据)。 step2:所有配置均设为默认,并查看导入的数据。完成后,点击下一步。 注意:在真实的工作环境中,数据必须以txt或csv的文件类型导入。 step3:在本地数据导入的页面的“导入至表”中,输入friends_in,也就是将本次实验的测试数据,导入到好友推荐的输入表friends_in中。确定目标字段与源字段匹配。完成后点击导入。开始执行导入操作。由于数据量较大,请等待1-2分钟。 step4:完成表数据导入后,页面会自动退出导入界面。点击页面左侧栏中的表查询tab页,双击打开表friends_in。然后,点击数据浏览,就可以快速查看friends_in表中存储的数据。若显示的数据与文件 friends_in_data.csv数据相同,则证明本次实验的测试数据导入成功。 添加MR资源 step1:点击最左侧栏中的资源管理,然后在左侧栏的资源管理列表的顶部,点击最右侧的第一个图标上传资源,开始配置上传资源信息。 step2:在弹出的对话框中,配置如下所示的上传资源信息。完成后,点击提交,将本地的好友推荐Jar包上传到Data IDE环境中。 在页面左侧的资源管理下,可以查看到上传成功的Jar包friends_mr.jar 测试并验证好友推荐 step1:点击页面顶层栏中的新建,新建任务,开始创建本次实验的MR任务。 step2:在弹出的对话框中,选择新建任务的任务类型为工作流任务,并输入任务名称为friends_odps_mr。默认“调度类型”为“同期调度”。完成后,点击“创建”。 step3:此时,右侧页面变为friends_odps_mr的画布,拖右侧节点组件中的OPEN MR到右侧画布的空白位置。 在画布上,可以查看到一个名称为friends_mr的OPEN MR任务节点。双击,进入MR任务的编辑页面。 step4:输入如下配置信息,完成后,点击顶层栏中的保存图标,保存MR任务的配置信息。点击运行,运行本次配置的OPEN MR任务。 配置项目说明: MRJar包:点击文本框,并选择friends_mr.jar 资源:默认设置为friends_mr.jar 输入表:输入friends_in mapper:输入friends_mr_odps.FriendsMapper,此为Jar包中Mapper的class全名 reducer:输入friends_mr_odps.FriendsReducer,此为Jar包中Reducer的class全名 combiner:输入friends_mr_odps.FriendsCombiner,此为Jar包中Combiner的class全名 输出表:输入friends_out 输出Key:输入userA:String, userB:String 输出Val:输入cnt:Bigint step5:在底部的日志中,可以查看到运行状态和运行结果。大约40s左右,页面显示“Current task status:FINISH”,表示已运行结束。 step6:在上述建表脚本文件中输入如下的SQL命令,并点击运行。查询共同好友超过2个的数据信息。 SELECT * FROM friends_out WHERE cnt>2 order by cnt desc limit 100; 恭喜大家完成《云数据·大计算:海量日志数据分析与应用》的Workshop,基于此相信大家也掌握了MaxCompute、大数据开发套件、Quick BI的基本操作,也能够完成自己公司或个人的一些真实需求。关于更多的详细内容,可以点击了解更多阿里云数加。
大数据workshop:《云数据·大计算:海量日志数据分析与应用》之《数据分析展现:可视化报表及嵌入应用》篇 实验背景介绍 了解更多2017云栖大会·成都峰会 TechInsight & Workshop. 本手册为云栖大会Workshop《云计算·大数据:海量日志数据分析与应用》的《数据分析展现:可视化报表及嵌入应用》篇而准备。主要阐述如何使用Quick BI制作报表,将前面几个实验处理分析得来的数据进行有效的展现和洞察。 《数据加工:用户画像》实验中的结果表数据已经事先导入RDS中,表名为rpt_user_info_all_d。该表包含了:用户id、地区、性别、年龄范围、星座、访问设备、PV 等访问信息。 实验目标 承接前述实验加工好的数据表,通过Quick BI完成网站用户分析画像的仪表板。 在该仪表板中,将展示用户的地区分布、设备分布和访问明细记录。 并能够根据年龄范围的查询条件,动态更新图表数据内容。 涉及大数据产品 Quick BI 实验环境准备 必备条件: 确保阿里云账号处于登录状态。 step1:点击进入大数据(数加)管理控制台>Quick BI tab页面下。 step2:点击购买Quick BI标准版。 step3:在购买页面中,点击立即购买。 step4:在确认订单页面中点击去支付,并确认支付。 step5:成功开通Quick BI。 进入Quick BI 确保阿里云账号处于登录状态。 step1:点击进入Quick BI管理控制台。 step2:点击进入Quick BI标准版。 添加数据源 《数据加工:用户画像》实验将数据导入云数据库RDS后,可以利用Quick BI添加为数据源进行分析和展示。本章节为了大家快速的掌握Quick BI的使用提前将数据给大家拷贝了一份在官方的RDS里,大家只需要配置即可用。 step1:点击左侧数据,进入数据管理页。 step2:切换至数据源标签页,点击新建数据源。 [说明] 数据量千万级别,响应速度秒级。添加RDS数据源,可以直联任何一个云上RDS数据库,或ECS中用户自建的RDS。 step3:在新建数据源对话框中,选择并点击RDS for MySQL。 step4:配置RDS for MySQL数据源,并点击测试连通性,待连通性测试通过后,点击添加保存现有配置信息。 RDS for MySQL数据源配置信息如下: 显示名称:workshop 数据库地址:rds955b606xk7e564006.mysql.rds.aliyuncs.com 端口:3306 数据库:workshop 用户名/密码:demo_001/demo_001 step5:点击数据源列表页中workshop数据源这行,显示该数据源下的数据表,找到表rpt_user_info_all_d,并点击创建数据集按钮生成数据集。 编辑数据集 说明: 将对表的加工过程固化保存下来以避免重复操作。 常见加工:维度、度量的切换、修改维度的类型、 增加计算字段、创建层次结构、修改字段的数据类型、更改度量聚合方式、制作关联模型。 step1:点击编辑按钮,进入编辑数据集页面。 step2:转换包含地理信息的字段的维度类型(一般字段不需要转换)。选择region字段->右键->维度类型切换->地理信息->省/直辖市。如下图所示: 转换成功后,在左侧维度栏中会看到region字段前多一个地理位置图标,如下图所示: step3:点击保存,保存数据集。 制作工作表 说明: 主要用于对于数据全方位的探索分析。 支持随意对维度、度量进行拖拽选择后进行查询,得到工作表内容,支持对维度、度量的过滤,支持排序,支持报表样式的设置。 保存的工作表,可以做为下一章节【制作仪表板】的数据来源,直接展现 下面希望获得每个地区(region),不同设备(device),不同性别(gender),不同年龄范围(age_range)的访问网站的pv量。 step1:点击左侧数据,找到数据集rpt_user_info_all_d 这行,点击表格分按钮,就会新建一个工作表对该数据集进行多维分析。 step2:分别选择需要分析的维度:region、device、gender、age_range并拖拽至分析面板行中,选择度量pv拖拽至分析面板中的列中,点击查询按钮, 得到每个地区、不同设备、不同性别、不同年龄范围的访问网站的pv量。 step3:点击保存,保存工作表名称为:访问明细。 制作仪表板 与上一节衔接,将分析结果固化为可视化报表。随着数据的更新,报表可视化展现最新数据。我们把这个过程叫制作仪表板。 制作思路:确定内容->确定布局和样式->制作图表->实现动态联动查询。 制作模板如下: 【说明】仪表板创作界面的工具布局: step1:点击主导航上的作品菜单,点击新建下拉菜单下的新建空白仪表板按钮,就可以开始创建一个仪表板。 step2:从仪表板空间中向画布拖入文本框并命名为网站用户画像。 step3:点击图表区域内的色彩地图,并选择数据源来源为来自数据集rpt_user_info_all_d,选择维度为region(地区)、度量为pv,选择完成后点击更新图表按钮,结果如下: 业务目的:查看访问用户的地域分布情况。 step4:将图表区域内的柱图拖拽至右侧画布,并配置选择数据来源为来自数据集rpt_user_info_all_d,选择维度为device(设备)、度量为pv,点击更新图表,结果如下: 业务目的:查看访问设备的分布情况. step5:点击图表区域内的交叉表,并选择数据源>来自工作表>访问明细(上述步骤中保存的工作表),点击更新图表按钮,结果如下: 业务目的:查看每个地区(region)、不同设备(device)、不同性别(gender),不同年龄范围(age_range)的访问网站的pv量。 step6:向画布中拖入控件区域内的查询条控件,在拖动指示分隔线落到文本框和气泡地图之间的时候,放下查询条件控件。 业务目的:增加查询条件年龄范围,实现动态图表。 拖动结束后,设置查询条件对应的字段、作用范围和样式: step6.1:首先将前面制作好的色彩地图、柱状图和交叉表控件的标题依次改为,地区分布和设备分布。 step6.2:接着,点击并设置查询条件对应到哪个字段和作用范围(上述配置的两个控件名称):变化的时候能影响到哪些图表控件。 step6.3:然后设置查询条件的显示样式,这里设置为枚举类型复选框样式。 [注意]鼠标选中查询条件的输入框后,样式设置界面才会出现。 step7:点击保存仪表板,名称为云栖大会workshop。 step8:点击预览仪表板。 修改年龄范围为不同的值,看仪表板的各个区块的图表的数据是否随着查询条件的变化而变化。 恭喜各位已经完成了数据清洗、加工到展现的链路。更多的关于Quick BI的进阶教程,详见:更多案例(销售数据分析、仪表板制作) Quick BI微信公众号: >>>点击进入>>>《社交数据分析:好友推荐》篇
阿里云MVP Meetup:《云数据·大计算:海量日志数据分析与应用》之《数据加工:用户画像》篇 实验背景介绍 本手册为阿里云MVP Meetup Workshop《云计算·大数据:海量日志数据分析与应用》的《数据加工:用户画像》篇而准备。主要阐述在使用大数据开发套件过程中如何将已经采集至MaxCompute上的日志数据进行加工并进行用户画像,学员可以根据本实验手册,去学习如何创建SQL任务、如何处理原始日志数据。 实验涉及大数据产品 大数据计算服务 MaxCompute 大数据开发套件 Data IDE 实验环境准备 必备条件: 开通大数据计算服务MaxCompute 创建大数据开发套件项目空间 进入大数据开发套件 确保阿里云账号处于登录状态。 step1:点击进入大数据开发套件项目列表。 step2:点击已经创建的项目空间名称,进入大数据开发套件。 新建数据表 若在实验《数据采集:日志数据上传》中已经新建脚本文件,可以直接切换至脚本开发tab下,双击打开create_table_ddl脚本文件。若无新建脚本文件可通过如下详细步骤进行创建脚本文件。 1.新建ods_log_info_d表 step1:点击数据开发,进入数据开发首页中点击新建脚本。 step2:配置文件名称为create_table_ddl,类型选择为ODPS SQL,点击提交。 step3:编写DDL创建表语句。 DDL建表语句如下: CREATE TABLE ods_log_info_d ( ip STRING COMMENT 'ip地址', uid STRING COMMENT '用户ID', time STRING COMMENT '时间yyyymmddhh:mi:ss', status STRING COMMENT '服务器返回状态码', bytes STRING COMMENT '返回给客户端的字节数', region STRING COMMENT '地域,根据ip得到', method STRING COMMENT 'http请求类型', url STRING COMMENT 'url', protocol STRING COMMENT 'http协议版本号', referer STRING COMMENT '来源url', device STRING COMMENT '终端类型 ', identity STRING COMMENT '访问类型 crawler feed user unknown' ) PARTITIONED BY ( dt STRING ); step4:选择需要执行的SQL语句,点击运行,直至日志信息返回成功表示表创建成功。 step5:可以使用desc语法来确认创建表是否成功。 step6:点击保存,保存编写的SQL建表语句。 2.新建dw_user_info_all_d表 创建表方法同上,本小节附建表语句: ---创建dw_user_info_all_d表 drop table if exists dw_user_info_all_d; CREATE TABLE dw_user_info_all_d ( uid STRING COMMENT '用户ID', gender STRING COMMENT '性别', age_range STRING COMMENT '年龄段', zodiac STRING COMMENT '星座', region STRING COMMENT '地域,根据ip得到', device STRING COMMENT '终端类型 ', identity STRING COMMENT '访问类型 crawler feed user unknown', method STRING COMMENT 'http请求类型', url STRING COMMENT 'url', referer STRING COMMENT '来源url', time STRING COMMENT '时间yyyymmddhh:mi:ss' ) PARTITIONED BY ( dt STRING ); 3.新建rpt_user_info_d表 创建表方法同上,本小节附建表语句: ---创建rpt_user_info_d表 DROP TABLE IF EXISTS rpt_user_info_d; CREATE TABLE rpt_user_info_d ( uid STRING COMMENT '用户ID', region STRING COMMENT '地域,根据ip得到', device STRING COMMENT '终端类型 ', pv BIGINT COMMENT 'pv', gender STRING COMMENT '性别', age_range STRING COMMENT '年龄段', zodiac STRING COMMENT '星座' ) PARTITIONED BY ( dt STRING ); 上述三张表创建成功后,保存脚本文件。 工作流设计 若成功完成实验《数据采集:日志数据上传》,即可切换至任务开发tab中,双击打开workshop工作流任务。 向画布中拖入三个ODPS SQL节点,依次命名为ods_log_info_d、dw_user_info_all_d、rpt_user_info_d,并配置依赖关系如下: 若未完成实验《数据采集:日志数据上传》篇,可通过进入查看如何创建工作流任务。 创建自定义函数 step1:点击下载ip2region.jar. step2:切换至资源管理tab页,点击上传按钮。 step3:点击选择文件,选择已经下载到本地的ip2region.jar。 step4:点击提交。 step5:切换至函数管理tab,点击创建函数按钮。 step6:资源选择ip2region.jar,其他配置项如下所示。 配置项说明如下: 函数名:getregion 类名:org.alidata.odps.udf.Ip2Region 资源:ip2region.jar step7:点击提交。 配置ODPS SQL节点 1)配置ods_log_info_d节点: step1:双击ods_log_info_d节点,进入节点配置界面,编写处理逻辑。 附SQL逻辑如下: INSERT OVERWRITE TABLE ods_log_info_d PARTITION (dt=${bdp.system.bizdate}) SELECT ip , uid , time , status , bytes -- 使用自定义UDF通过ip得到地域 , getregion(ip) AS region -- 通过正则把request差分为三个字段 , regexp_substr(request, '(^[^ ]+ )') AS method , regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') AS url , regexp_substr(request, '([^ ]+$)') AS protocol -- 通过正则清晰refer,得到更精准的url , regexp_extract(referer, '^[^/]+://([^/]+){1}') AS referer -- 通过agent得到终端信息和访问形式 , CASE WHEN TOLOWER(agent) RLIKE 'android' THEN 'android' WHEN TOLOWER(agent) RLIKE 'iphone' THEN 'iphone' WHEN TOLOWER(agent) RLIKE 'ipad' THEN 'ipad' WHEN TOLOWER(agent) RLIKE 'macintosh' THEN 'macintosh' WHEN TOLOWER(agent) RLIKE 'windows phone' THEN 'windows_phone' WHEN TOLOWER(agent) RLIKE 'windows' THEN 'windows_pc' ELSE 'unknown' END AS device , CASE WHEN TOLOWER(agent) RLIKE '(bot|spider|crawler|slurp)' THEN 'crawler' WHEN TOLOWER(agent) RLIKE 'feed' OR regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') RLIKE 'feed' THEN 'feed' WHEN TOLOWER(agent) NOT RLIKE '(bot|spider|crawler|feed|slurp)' AND agent RLIKE '^[Mozilla|Opera]' AND regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') NOT RLIKE 'feed' THEN 'user' ELSE 'unknown' END AS identity FROM ( SELECT SPLIT(col, '##@@')[0] AS ip , SPLIT(col, '##@@')[1] AS uid , SPLIT(col, '##@@')[2] AS time , SPLIT(col, '##@@')[3] AS request , SPLIT(col, '##@@')[4] AS status , SPLIT(col, '##@@')[5] AS bytes , SPLIT(col, '##@@')[6] AS referer , SPLIT(col, '##@@')[7] AS agent FROM ods_raw_log_d WHERE dt = ${bdp.system.bizdate} ) a; step2:点击保存。 step3:点击返回,返回至工作流开发面板。 2)配置dw_user_info_all_d节点: step1:双击dw_user_info_all_d节点,进入节点配置界面,编写处理逻辑。 附SQL语句如下: INSERT OVERWRITE TABLE dw_user_info_all_d PARTITION (dt='${bdp.system.bizdate}') SELECT COALESCE(a.uid, b.uid) AS uid , b.gender , b.age_range , b.zodiac , a.region , a.device , a.identity , a.method , a.url , a.referer , a.time FROM ( SELECT * FROM ods_log_info_d WHERE dt = ${bdp.system.bizdate} ) a LEFT OUTER JOIN ( SELECT * FROM ods_user_info_d WHERE dt = ${bdp.system.bizdate} ) b ON a.uid = b.uid; step2:点击保存。 step3:点击返回,返回至工作流开发面板。 配置rpt_user_info_d节点 step1:双击进入rpt_user_info_d节点进入配置界面。 附SQL代码如下: INSERT OVERWRITE TABLE rpt_user_info_d PARTITION (dt='${bdp.system.bizdate}') SELECT uid , MAX(region) , MAX(device) , COUNT(0) AS pv , MAX(gender) , MAX(age_range) , MAX(zodiac) FROM dw_user_info_all_d WHERE dt = ${bdp.system.bizdate} GROUP BY uid; step2:点击保存。 step3:点击返回,返回至工作流开发面板。 提交工作流任务 step1:点击提交,提交已配置的工作流任务。 step2:在变更节点列表弹出框中点击确定提交。 提交成功后工作流任务处于只读状态,如下: 通过补数据功能测试新建的SQL任务 鉴于在数据采集阶段已经测试了数据同步任务,本节中直接测试下游SQL任务即可,也保证了时效性。 step1:进入运维中心 > 任务列表,找到workshop工作流任务。 step2:单击名称展开工作流。 ![进入节点试图] step3:选中ods_log_info_d节点,单击补数据。 ![选择补数据节点] step4:在补数据节点对话框中全选节点名称,选择业务日期,点击运行选中节点。 自动跳转到补数据任务实例页面。 step5:输入字母‘d’,通过过滤条件刷新,直至SQL任务都运行成功即可。 确认数据是否成功写入MaxCompute相关表 step1:返回到create_table_ddl脚本文件中。 step2:编写并执行sql语句查看rpt_user_info_d数据情况。。 附录:SQL语句如下。 ---查看rpt_user_info_d数据情况 select * from rpt_user_info_d limit 10;
大数据workshop:《云数据·大计算:海量日志数据分析与应用》之《数据采集:日志数据上传》篇 实验背景介绍 了解更多2017云栖大会·成都峰会 TechInsight & Workshop. 本手册为云栖大会Workshop《云计算·大数据:海量日志数据分析与应用》的《数据采集:日志数据上传》篇而准备。主要为保障各位学员在workshop当天能够顺畅进行动手实操,那么本节为学员掌握阿里云数据采集的操作和使用。 实验涉及大数据产品 大数据计算服务 MaxCompute 大数据开发套件 Data IDE 实验环境准备 必备条件:首先需要确保自己有阿里云云账号并已实名认证。详细点击: 注册阿里云账号 企业实名认证 个人实名认证 开通大数据计算服务MaxCompute 若已经开通和购买了MaxCompute,请忽略次步骤直接进入创建Data IDE项目空间。 step1:进入阿里云官网并点击右上角登录阿里云账号。 step2:点击进入大数据计算服务产品详情页,点击立即开通。 step3:选择按量付费并点击立即购买。 创建Data IDE项目空间 确保阿里云账号处于登录状态。 step1:点击进入大数据(数加)管理控制台>大数据开发套件tab页面下。 step2:点击创建项目,跳出创建项目对话框。 step3:勾选付费方式为I/O后付费,填写项目名称及相关信息,点击确定,直至返回创建成功状态。 项目名需要字母或下划线开头,只能包含字母下划线和数字。【注意】项目名称全局唯一,建议大家采用自己容易区分的名称来作为本次workshop的项目空间名称。 进入大数据开发套件 确保阿里云账号处于登录状态。 step1:点击进入大数据开发套件项目列表。 step2:点击已经创建的项目空间名称,进入大数据开发套件。 新建数据源 根据workshop模拟的场景,需要分别创建FTP数据源和RDS数据源。 1.新建FTP数据源 step1:点击项目管理>数据源管理,继而点击新增数据源。 step2:选择数据源类型ftp,同时Protocol选择为sftp,其他配置项如下。 FTP数据源配置信息如下: 数据源名称:ftp_workshop_log 数据源描述:ftp日志文件同步 数据源类型:ftp 网络类型:经典网络 Protocol:sftp Host:10.161.147.251 Port:22 用户名/密码:workshop/workshop step3:点击测试连通性,连通性测试通过后,点击确定保存配置。 2.新建RDS数据源 step1:点击项目管理>数据源管理,继而点击新增数据源。 step2:选择数据源类型为RDS>mysql并完成相关配置项。 RDS数据源配置信息如下: 数据源名称:rds_workshop_log 数据源描述:rds日志数据同步 数据源类型:RDS > Mysql RDS实例名称:rds955b606xk7e564006 RDS实例购买者ID:1805651026304759 数据库名:workshop 用户名/密码:demo_001/demo_001 step3:点击测试连通性,连通性测试通过后,点击确定保存配置。 创建目标表 step1:点击数据开发,进入数据开发首页中点击新建脚本。 step2:配置文件名称为create_table_ddl,类型选择为ODPS SQL,点击提交。 step3:编写DDL创建表语句,如下分别创建FTP日志对应目标表和RDS对应目标表. DDL语句如下: --创建ftp日志对应目标表 DROP TABLE IF EXISTS ods_raw_log_d; CREATE TABLE ods_raw_log_d ( col STRING ) PARTITIONED BY ( dt STRING ); --创建RDS对应目标表 DROP TABLE IF EXISTS ods_user_info_d; CREATE TABLE ods_user_info_d ( uid STRING COMMENT '用户ID', gender STRING COMMENT '性别', age_range STRING COMMENT '年龄段', zodiac STRING COMMENT '星座' ) PARTITIONED BY ( dt STRING ); step3:点击运行,直至日志信息返回成功表示两张目标表创建成功。 step4:可以使用desc语法来确认创建表是否成功。 step5:点击保存,保存编写的SQL建表语句。 新建工作流任务 step1:点击新建并选择新建任务。 step2:选择工作流任务,调度类型选择为周期调度,其他配置项如下。 step3:点击创建。 step4:进入工作流配置面板,并向面板中拖入一个虚节点(命名为workshop_start)和两个数据同步节点(分别命名为ftp_数据同步和rds_数据同步): step5:拖拽连线将workshop_start虚节点设置为两个数据同步节点的上游节点,如下所示: step6:点击保存(或直接快捷键ctrl+s)。 配置数据同步任务 1)配置ftp_数据同步节点 step1:双击ftp_数据同步节点,进入节点配置界面。选择来源:并选择数据来源事先配置好的ftp数据源,为ftp_workshop_log,文件路径为/home/workshop/user_log.txt。可以对非压缩文件进行数据预览。 数据来源配置项具体说明如下: 数据来源:ftp_workshop_ftp 文件路径:/home/workshop/user_log.txt 列分隔符:| step2:选择目标。点击下一步。 数据流向选择数据源为odps_first,表名为ods_raw_log_d。分区信息和清理规则都采取系统默认,即清理规则为写入前清理已有数据,分区按照${bdp.system.bizdate}。 step3:配置字段映射。连接要同步的字段。如下: step4:在下一步操作中配置通道控制,作业速率上限为10MB/s,进入下一步。 可在预览保存页面中,预览上述的配置情况,也可以进行修改,确认无误后,点击保存。 step5:点击返回工作流面板。 2)配置rds_数据同步节点 step1:双击rds_数据同步节点进入配置界面。选择来源:选择数据来源为rds_workshop_log,表名为ods_user_info_d;切分键为使用默认生成列即可。点击数据预览,可以看到表中数据样例。 step2:进入下一步,选择目标数据源和表名。 step3:进入下一步,配置字段映射。默认会同名映射,字段映射关系采用默认即可,如下所示: step4:进入下一步,配置作业速率上限。 step5:在预览保存页面中确认配置信息,无误后点击保存配置。 提交工作流任务 step1:点击提交,提交已经配置的工作流任务。 step2:在变更节点列表弹出框中点击确定提交。 提交成功后工作流任务处于只读状态,如下: 测试运行工作流任务 step1:点击测试运行。 step2:在周期任务运行提醒弹出框点击确定。 step3:在测试运行弹出框中,实例名称和业务日期都保持默认,点击运行。 step4:在工作流任务测试运行弹出框中,点击前往运维中心。 在运维中心可以查看任务视图,如下图表示该工作流任务(名称为workshop_start)正在运行。 直至所有节点都运行返回成功状态即可(需要点击运维视窗中的刷新按钮查看实时状态)。如下所示: step5:右键查看节点运行日志,可以看到成功同步数据条数。 确认数据是否成功导入MaxCompute step1:返回到create_table_ddl脚本文件中。 step2:编写并执行sql语句查看导入ods_raw_log_d记录数。 step3:同样编写并执行sql语句查看导入ods_user_info_d记录数。 附录:SQL语句如下,其中分区键需要更新为业务日期,如测试运行任务的日期为20170328,那么业务日期为20170327. ---查看是否成功写入MaxCompute select count(*) from ods_raw_log_d where dt=业务日期; select count(*) from ods_user_info_d where dt=业务日期; >>>点击进入>>>《数据加工:用户画像》篇
大数据workshop:《云数据·大计算:海量日志数据分析与应用》 实验背景介绍 本手册为阿里云MVP Meetup Workshop之《云计算·大数据:海量日志数据分析与应用》场的前提准备条件所需。主要为保障各位学员在workshop当天能够顺畅进行动手实操,那么本场需要各位学员再参加之前确保自己云账号已免费开通MaxCompute(华东2 Region)、Data IDE。 实验涉及大数据产品 大数据计算服务 MaxCompute 大数据开发套件 Data IDE 实验环境准备 必备条件:首先需要确保自己有阿里云云账号并已实名认证。详细点击: 注册阿里云账号 企业实名认证 个人实名认证 开通大数据计算服务MaxCompute 若已经开通和购买了MaxCompute,请忽略次步骤直接进入创建Data IDE项目空间。 step1:进入阿里云官网并点击右上角登录阿里云账号。 step2:点击进入大数据计算服务产品详情页,点击立即开通。 step3:选择按量付费,且选择华东2(上海) Region点击立即购买。 创建Data IDE项目空间 确保阿里云账号处于登录状态。 step1:点击进入大数据(数加)管理控制台>大数据开发套件tab页面下。 step2:点击右上角创建项目,跳出创建项目对话框。 step3:勾选付费方式为I/O后付费,填写项目名称及相关信息,点击确定,直至返回创建成功状态。 项目名需要字母或下划线开头,只能包含字母下划线和数字。【注意】项目名称全局唯一,建议大家采用自己容易区分的名称来作为本次workshop的项目空间名称。 0元购开通Quick BI 确保阿里云账号处于登录状态。 step1:点击进入大数据(数加)管理控制台>Quick BI tab页面下。 step2:点击购买Quick BI标准版。 step3:在购买页面中,点击立即购买。 step4:在确认订单页面中点击去支付,并确认支付。 step5:成功开通Quick BI。
前几天在云栖社区上写了一篇普惠性的文章,很粗偏向数据架构层面。具体可以进入:【数据架构解读】基于阿里云数加StreamCompute和MaxCompute构建的访问日志统计分析,但是在具体实操中肯定不会那么一帆风顺。为了避免大家走弯路特意先写了一篇架构篇,以免大家后续发现不适用而更改或优化工作。 本文偏向与实操层面的为大家介绍,如何基于阿里云数加StreamCompute、DataV快速构建网站日志实时分析。 【什么场景适合用流计算】 流计算提供了针对流式数据实时分析的一站式工具链,对于大量流式数据存在实时分析、计算、处理的逻辑可以考虑通过流计算该任务。举例如下: 1. 针对实时营销活动,需要实时获取活动流量数据分析以了解活动的营销情况,此时可以上流计算。 2. 针对物联网设备监控,需要实时获取设备数据进行实时灾难监控,此时可以上流计算。 3. 对于手机APP数据实时分析,需要实时了解手机设备的各类指标情况,此时可以上流计算 【使用前须知】 为保障本教程的顺利的进行,须知晓如下使用前提: 具备阿里云账号(淘宝及1688帐号可直接使用会员名登录); 下载并安装Logstash的DataHub Output插件。 开通DataHub/StreamCompute/AnalyticDB或RDS/DataV产品; 【实现的业务场景】 数据来源于某网站上的HTTP访问日志数据,基于这份网站日志来实现如下分析需求: 实时统计并展现网站的PV和UV,并能够按照用户的终端类型(如Android、iPad、iPhone、PC等)分别统计。 实时统计并展现网站的流量来源。 从IP中解析出region或者经纬度在地图上进行展示。 【说明】浏览次数(PV)和独立访客(UV)是衡量网站流量的两项最基本指标。用户每打开一个网站页面,记录一个PV,多次打开同一页面PV 累计多次。独立访客是指一天内,访问网站的不重复用户数,一天内同一访客多次访问网站只计算1 次。Referer 可以分析网站访问来源,它是网站广告投放评估的重要指标,还可以用于分析用户偏好等。 【操作流程概述】 如上图所示,红色箭线部分为流式数据处理部分,主要拆解如下: l 配置Logstash,将网站产生的日志实时采集至DataHub。 l 申请开通DataHub,创建项目Project及Topic(DataHub服务订阅和发布的最小单位)。 l 开通StreamCompute,创建项目Project及注册数据输入源(DataHub)和输出源(RDS),并创建流任务(Stream SQL任务)。 l 上一步骤中关于输出源RDS的配置,需要事先购买RDS for Mysql资源。 l 申请开通DataV,新建RDS数据源并创建DataV项目进入大屏制作。 【数据结构设计】 DataHub Topic: 分别创建Topic为:coolshell_log_tracker、coolshell_log_detail、coolshell_log_fact。 RDS:分别创建Table为: adm_refer_info、 adm_user_measures、 flyingline_coordinates ã 【网站日志实时解析】 Logstash安装与配置 配置前须知 阿里云流计算为了方便用户将更多数据采集进入DataHub,提供了针对Logstash的DataHub Output插件。 Logstash安装要求JRE 7版本及以上,否则部分工具无法使用。 操作步骤 步骤1 点击下载Logstash 2.4.1,点击下载。 步骤2 通过如下命令解压即可使用: $ tar -xzvf logstash-2.4.1.tar.gz $ cd logstash-2.4.1 步骤3 下载DataHub Logstash Output插件并使用如下命令进行安装: $ {LOG_STASH_HOME}/bin/plugin install --local logstash-output-datahub-1.0.0.gem 步骤4 下载GeoIP解析IP数据库到本地。 wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz 步骤5 解压到当前路径并移动到Logstash具体路径下。 gzip -d GeoLiteCity.dat.gz mv GeoLiteCity.dat /etc/logstash/. 步骤6 配置Logstash任务.conf,示例如下: input { file { path => "/Users/yangyi/logstash-2.4.1/sample/coolshell_log.log" start_position => "beginning" } } filter{ grok { match => { "message" => "(?<ip>[^ ]*) - (?<user>[- ]*) \[(?<accesstime>[^\])*]\] \"(?<method>\S+)(?: +(?<url>[^\"]*?)(?: +\S*)?)?(?: +(?<protocol>[^\"]*))\" (?<status>[^ ]*) (?<byte_cnt>[^ ]*) \"(?<referer>[^\"]*)\" \"(?<agent>[^\"]*)\"" } } geoip { source => "ip" fields => ["city_name","latitude", "longitude"] target => "geoip" database => "/Users/yangyi/logstash-2.4.1/bin/GeoLiteCity.dat" add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ] add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ] } mutate { add_field=>{"region" => "%{[geoip][city_name]}"} add_field=>{"coordinates" => "%{[geoip][coordinates]}"} add_field=>{"x" => "%{[geoip][longitude]}"} add_field=>{"y" => "%{[geoip][latitude]}"} convert => [ "x", "float" ] convert => [ "y", "float" ] #convert => [ "coordinates", "float" ] } ruby{ code => " md = event.get('accesstime') event.set('dt',DateTime.strptime(md,'%d/%b/%Y:%H:%M:%S').strftime('%Y%m%d')) " } } output { datahub { access_id => "输入您的access_id" access_key => "输入您的access_key" endpoint => "需要根据自己的网络情况输入对应的endpoint" project_name => "输入您的DataHub Project名称" topic_name => "输入您对应的DataHub Topic" #shard_id => "0" #shard_keys => ["thread_id"] dirty_data_continue => true dirty_data_file => "/Users/yangyi/logstash-2.4.1/sample/dirty.data" dirty_data_file_max_size => 1000 } } 配置文件为coolshell_log.conf。具体DataHub Topic信息可详见 数据存储 章节。 步骤7 启动任务示例如下: bin/logstash -f sample/coolshell_log.conf 【数据表创建】 附RDS创建表DDL: ---创建adm_refer_info--- CREATE TABLE IF NOT EXISTS adm_refer_info(referer VARCHAR(32) PRIMARY KEY, referer_count BIGINT); --创建adm_user_measures-- CREATE TABLE IF NOT EXISTS adm_user_measures(device VARCHAR(32) PRIMARY KEY, pv BIGINT,uv BIGINT); --创建adm_region_measures -- CREATE TABLE `adm_region_measures` ( `region` varchar(32) NOT NULL, `region_cnt` bigint(20) DEFAULT NULL, PRIMARY KEY (`region`) ) --创建adm_region_measures -- CREATE TABLE `adm_region_measures` ( `region` varchar(32) NOT NULL, `region_cnt` bigint(20) DEFAULT NULL, PRIMARY KEY (`region`) ) --创建flyingline_coordinates -- CREATE TABLE `flyingline_coordinates` ( `city_name` varchar(32) DEFAULT NULL, `coordinates` varchar(50) DEFAULT NULL, `x` double DEFAULT NULL, `y` double DEFAULT NULL ) 【流式数据处理】 注册数据存储包括DataHub和RDS: 按照数据链路图中来编写处理逻辑(附核心代码): 【处理逻辑1】 INSERT INTO coolshell_log_detail SELECT ip, accesstime, method, url, protocol, status, byte_cnt, regexp_extract(referer, '^[^/]+://([^/]+){1}') as referer, agent, CASE WHEN TOLOWER(agent) RLIKE 'android' THEN 'android' WHEN TOLOWER(agent) RLIKE 'iphone' THEN 'iphone' WHEN TOLOWER(agent) RLIKE 'ipad' THEN 'ipad' WHEN TOLOWER(agent) RLIKE 'macintosh' THEN 'macintosh' WHEN TOLOWER(agent) RLIKE 'windows phone' THEN 'windows_phone' WHEN TOLOWER(agent) RLIKE 'windows' THEN 'windows_pc' ELSE 'unknown' END AS device, CASE WHEN TOLOWER(agent) RLIKE '(bot|spider|crawler|slurp)' THEN 'crawler' WHEN TOLOWER(agent) RLIKE 'feed' OR url RLIKE 'feed' THEN 'feed' WHEN TOLOWER(agent) NOT RLIKE '(bot|spider|crawler|feed|slurp)' AND agent RLIKE '^[Mozilla|Opera]' AND url NOT RLIKE 'feed' THEN 'user' ELSE 'unknown' END AS identity FROM coolshell_log_tracker WHERE url NOT LIKE '^[/]+wp-'; 【处理逻辑2】 INSERT INTO coolshell_log_fact select md5(concat(ip, device, protocol, identity, agent)),--根据ip、device、protocol、identity和agent字段可以唯一确定uid ip, accesstime, method, url, protocol, status, byte_cnt, referer, agent, device, identity FROM coolshell_log_detail; 【处理逻辑3、4、5、6】 ---adm_refer_info中的处理逻辑--- REPLACE INTO adm_refer_info SELECT referer, COUNT(referer) as referer_count FROM coolshell_log_fact WHERE LENGTHqi(referer) > 1 GROUP BY referer; --adm_user_measures中的处理逻辑--- REPLACE INTO adm_user_measures SELECT device, COUNT(uid) as pv, COUNT(distinct uid) as uv FROM coolshell_log_fact GROUP BY device; 附录:adm_region_measures和flyingline_coordinates处理逻辑 REPLACE INTO adm_region_measures SELECT CASE WHEN region='%{[geoip][city_name]}' THEN 'unknown' WHEN region!='%{[geoip][city_name]}' THEN region END AS region, count(region) FROM coolshell_log_tracker_bak GROUP BY region; INSERT INTO flyingline_coordinates SELECT CASE WHEN region='%{[geoip][city_name]}' THEN 'unknown' WHEN region!='%{[geoip][city_name]}' THEN region END AS region, coordinates,x,y FROM coolshell_log_tracker_bak where coordinates is NOT NULL; 【上线Stream SQL】 上线任务后需要对任务进行启动: 【创建大屏】 现在DataV中创建RDS数据源: 然后根据如下拖拽如组件配置简单的sql: 本文主要讲述了实时场景的链路,后续也会将日志归档到MaxCompute然后通过Quick BI进行报表分析。敬请期待! 最后给大家推荐一个在线的正则debug工具:http://grokdebug.herokuapp.com/