数据湖构建DLF快速入门
1. 实验说明
步骤一:实验说明
在您开始实验前,请您务必看完如下说明再进行实验,以保证实验流畅性。
- 资源类型
您可以选择领取免费试用额度来开启实验,也可以直接使用个人账号资源来开启实验,如您是某个产品的新用户,我们推荐您点击领取免费试用额度来开启实验。
免费领用的资源或个人创建的资源都归属于您账号下,请您注意免费资源的到期时间,以及个人资源的费用使用情况。
- 如何开始实验
您可以选择2.1 点击领取免费试用额度进入或2.2 点击个人账号资源进入,具体进入环节您可查看下方内容。
2.1 点击领取免费试用额度进入
您可以点击领取免费试用额度,在下方卡片中领用免费资源。具体产品领用步骤,请查看下方。无论您是否领用了免费试用额度,您都可点击我已开通,进入实验,从而开始实验。您未领取的资源,将使用你个人的资源进行创建,请注意费用。
OSS领用步骤
- 点击卡片中的立即试用
- 默认配置,勾选服务协议
- 点击立即试用即可领用
2.2 点击个人账号资源进入
选择个人账号资源后,点击确认开启实验,即可直接开始后面的实验步骤。
2. 开通DLF和OSS服务
本步骤指导您开通DLF和OSS服务,如您已经开通,可以直接跳转⾄步骤三。
- 点击进⼊DLF控制台。
- 开通DLF及其依赖OSS服务,并完成授权(如果已开通可直接跳过)。
2.1 点击免费开通数据湖构建,进⼊服务开通⻚⾯。
2.2 勾选服务协议,点击立即开通。
2.3 开通成功,点击管理控制台,会自动跳转至DLF控制台⻚⾯。
2.4 页面会提示需要启用数据湖构建服务访问外部数据源的权限。
- 点击开通。
- 启用数据湖构建服务访问外部数据源的权限,需要进行AliyunDLFWorkFlowDefaultRole的角色授权,点击同意授权。
2.5 开通OSS服务的权限。
(1)如果您领取了OSS免费资源,此处会显示已具备该服务;如果您未领取OSS免费资源,但是之前开通过OSS服务,此处也会显示已具备;此时点击刷新按钮即可进⼊DLF控制台主⻚。
(2)如果您未领取OSS免费资源,也未开通过OSS服务,此处会显示开通(建议您领取OSS免费资源),点击开通按钮即可进入OSS服务开通页面。
- 点击立即开通。
- 勾选服务协议,点击立即开通。
- 开通成功。
2.6 回到DLF控制台⻚⾯,⻚⾯会⾃动跳转⾄DLF控制台主⻚⾯,如果没有自动跳转可以点击刷新。
- 开通完成后,进⼊DLF控制台主⻚:
3. 在OSS中导⼊需要分析的数据
本步骤指导您在OSS中导⼊需要分析的数据。
若您未领用OSS免费资源,或者是使用个人账号资源,使用OSS会产生费用,请您注意个人资源的费用使用情况,费用详情请参考计费概述。
- 点击链接,下载样例数据的压缩文件⾄本地磁盘。
解压后得到⽂件夹:user_behavior_data,包含item和user个⽂件夹,⾥⾯分别包含了各⾃的csv数据⽂ 件。本次分析主要集中在user⽂件中,数据内容如下。
- 创建OSS Bucket(若您已经有OSS Bucket,可以跳过该步骤)。
2.1 进⼊对象存储OSS控制台。
2.2 在左侧导航栏中,单击Bucket列表。
2.3 在Bucket列表页面,单击创建Bucket。
2.4 在创建Bucket页面,根据页面引导进行创建Bucket。
- Bucket名称:自定义Bucket名称,名称全局唯一,Bucket创建成功后名称无法更改;
- 地域:按照实际情况选择,本实验选择北京;
- 其他配置:保持默认即可;
- 单击确定,即可创建bucket。
2.5 点击我知道了,确认创建。
2.6 创建成功,点击进入Bucket,会自动跳转至bucket详情页面。
- 将下载解压后的⽂件上传⾄OSS控制台。
3.1 在文件管理-文件列表右侧功能框中,点击上传文件。
3.2 在上传文件界面,点击扫描文件夹。
3.3 在弹出的对话框中,找到第1步下载后解压的user_behavior_data⽂件夹,选择确定,待文件出现在下图所示的框中后,点击上传文件。
3.4 稍等一会儿可以看到任务列表中,显示文件上传成功,点击右上角图标关闭任务列表。
3.5 点击bucket文件列表,可以查看到刚刚上传的文件,点击文件名。
3.6 可以看到⽬录结构如下所示,item和user为两个表的数据⽂件夹。
4. 在DLF上抽取元数据
本步骤指导您在DLF上抽取元数据,DLF中元数据库可以理解为在关系型数据库中的Database,其下⼀级为Table。由于DLF使用您的个人资源,使用过程中可能会产生费用,详情可参看计费概述。
4.1 创建元数据表
- 在DLF控制台中,切换地域(本实验为北京),选择元数据管理,在数据库页面点击新建数据库。
- 在新建数据库页面,会默认提供所属数据目录,数据库名称可以自定义,选择路径点击更改。
- 在OSS路径选择弹窗中,会展示当前地域OSS中创建的bucket,点击目标bucket。
- 进入目标bucket文件夹路径,点击user_behavior_data文件夹。
- 进入user_behavior_data文件夹路径,点击确定。
- 可以看到选择路径已经变更成存有⽤户⾏为分析的⽂件夹路径,点击确定。
- 页面会自动刷新,可以看到如下图所示,元数据库已创建成功,复制一下位置(OSS路径)。
4.2 发现OSS⽂件中的元数据表信息
- 在左侧导航栏中,点击元数据抽取,进⼊DLF元数据抽取⻚⾯,在抽取任务中,点击新建抽取任务。
- 在设置抽取源页面,参数设置如下:
- 抽取任务名称:自定义输入抽取任务名称;
- OSS路径:粘贴4.1步骤复制的OSS路径;
- 解析格式:选择csv;
- csv文件配置:保持默认;
点击下一步。
- 在设置目标信息页面,参数设置如下:
- 所属数据目录:会默认提供所属数据目录;
- 目标数据库:下拉选择目标数据库;
- 抽取任务发现表字段更新时:选择仅新增列,不支持删除原有列;
- 如何处理OSS中发现已删除对象:选择忽略更新,不删除任何表;
点击下一步。
- 在设置抽取任务页面,参数设置如下:
- RAM⻆⾊:使用过程中需要⽤到的RAM角色权限:AliyunDLFWorkFlowDefaultRole;
- 执行策略:选择调度执⾏,并选择每天执行,这样可以在csv结构有变化时定期更新表结构;
- 抽取策略:选择快速模式,以最快的速度完成元数据发现。
点击下一步。
- 在确认页面,核对信息后,点击保存并⽴即执⾏。
- 系统会自动跳转到元数据抽取列表⻚⾯,可以看到刚刚新建的抽取任务,同时抽取任务的最近执行状态显示任务创建中,说明抽取任务已经开始创建并⾃动运⾏。
- 过一会儿可以看到任务运⾏完成,将⿏标移到最近执行状态下的问号图标,浮窗中会显示已经成功创建的两张元数据表,点击浮窗中的数据库。
- 默认会跳转至目标元数据库-基本信息页面。
- 选择表列表,可以查看到目标元数据库中的表信息,点击表名。
- 在数据表-基本信息中,可以查看并确认抽取出来的表结构是否符合预期。
- ⾄此,我们通过DLF⾃动发现数据湖CSV⽂件Schema的过程已经完成,下⼀步我们开始针对数据湖内的数据做分析。
5. 使用数据探索功能进行用户行为数据分析
数据分析的过程主要分为三步:预览并检查数据信息,简单的数据清洗,进⾏⽤户活跃度、漏⽃模型和商品热度分析;本步骤指导您如何使用数据探索功能进行用户行为数据分析。
- 在DLF控制台⻚⾯,点击左侧导航栏的数据探索,进⼊数据探索页面,可以看到步骤四创建的元数据库,点击数据库左边的+号可以展开数据表。
- 在数据库/表中,鼠标移动至数据表,点击数据表右边的按钮,点击查看列信息,下方会出现列信息。
2.1 查看item表的列信息。
2.2 查看user表的列信息。
- 预览并检查数据。
备注:主要通过SQL查询数据,SQL查询目前仅支持单条语句,请逐条执行;本实验元数据库名称为dlf_test,请自行替换为步骤四创建的元数据库名称。
3.1 在SQL查询框中输⼊下⾯的语句,查询user表的数据信息。
select * from `dlf_test ` . ` user ` limit 10;
点击运行,可以看到查询结果。
3.2 在SQL查询框中输⼊下⾯的语句,查询item表的数据信息。
select * from `dlf_test ` . `item ` limit 10;
点击运行,可以看到查询结果。
3.3 在SQL查询框中输⼊下⾯的语句,查询user表的⽤户数。
select COUNT(DISTINCT user_id) from `dlf_test ` . ` user ` ;
点击运行,可以看到查询结果。
3.4 在SQL查询框中输⼊下⾯的语句,查询item表的商品数。
select COUNT(DISTINCT item_id) from `dlf_test ` . `item ` ;
点击运行,可以看到查询结果。
3.5 在SQL查询框中输⼊下⾯的语句,查询user表的⾏为记录数。
select COUNT(*) from `dlf_test ` . ` user ` ;
点击运行,可以看到查询结果。
- 数据预处理。
这一步,我们需要对原始数据进⾏⼀定的处理,以提⾼数据的可读性,并提⾼分析的性能,具体操作如下:
(1)将user数据表中的behavior_type修改成更好理解的字符串信息;
(2)将⽇志+时间的格式打平到两个单独的列,再加上周信息,便于分别做⽇期和⼩时级别的分析;
(3)过滤掉不必要的字段,并将数据存⼊新表user_log,表格式为Parquet,按⽇期分区;后续我们会基于新表做⽤户⾏为分析。
4.1 在SQL查询框中输⼊下⾯的语句,对原始数据进行处理。
create table `dlf_test` . `user_log` USING PARQUET PARTITIONED BY (date) as select user_id, item_id, CASE WHEN behavior_type = 1 THEN 'click' WHEN behavior_type = 2 THEN 'collect' WHEN behavior_type = 3 THEN 'cart' WHEN behavior_type = 4 THEN 'pay' END as behavior, item_category, time, date_format(time, 'yyyy-MM-dd') as date, date_format(time, 'H') as hour, date_format(time, 'E') as day_of_week from `dlf_test ` . ` user ` ;
点击运行,可以在查询结果中看到运行成功。
4.2 刷新一下当前浏览器页面,可以看到目标数据库中,已经成功创建了user_log数据表,点击数据表右边的按钮,可以查看列信息。
4.3 在SQL查询框中输⼊下⾯的语句,查看运⾏后的数据。
select * from `dlf_test ` . ` user_log ` limit 10;
点击运行,可以看到查询结果。
- ⽤户⾏为分析
5.1 首先,我们基于漏⽃模型,对所有⽤户从点击到加购/收藏到购买的转化情况进行分析,在SQL查询框中输⼊下⾯的语句。
SELECT behavior, COUNT(*) AS total FROM `dlf_test ` . ` user_log ` GROUP BY behavior ORDER BY total DESC
点击运行,可以看到查询结果。
5.2 然后,我们对⼀周内每天的⽤户⾏为做统计分析,在SQL查询框中输⼊下⾯的语句。
SELECT date, day_of_week, COUNT(DISTINCT(user_id)) as uv, SUM(CASE WHEN behavior = 'click' THEN 1 ELSE 0 END) AS click, SUM(CASE WHEN behavior = 'cart' THEN 1 ELSE 0 END) AS cart, SUM(CASE WHEN behavior = 'collect' THEN 1 ELSE 0 END) AS collect, SUM(CASE WHEN behavior = 'pay' THEN 1 ELSE 0 END) AS pay FROM `dlf_test ` . ` user_log ` GROUP BY date, day_of_week ORDER BY date
点击运行,可以看到查询结果。
5.3 最后,我们结合商品表,分析出数据集中最受欢迎(售卖最多)的10个商品品类,在SQL查询框中输⼊下⾯的语句。
SELECT item.item_category, COUNT(*) AS times FROM `dlf_test ` . `item ` item JOIN `dlf_test ` . ` user_log ` log ON item.item_id = log.item_id WHERE log.behavior= 'pay' GROUP BY item.item_category ORDER BY times DESC LIMIT 10;
点击运行,可以看到查询结果。
- 下载分析结果。
DLF提供将分析结果以CSV⽂件形式下载的功能,启⽤该功能需要提前设置分析结果的存储路径(OSS 路径)。
6.1 如果您没有设置运行结果的存储路径,页面右上方会有文字提示您进行路径配置,可以点击⻚⾯右上角的路径设置按钮进⾏设置;或者点击查询结果窗口的下载按钮,会弹出提示浮窗,点击设置路径进行路径配置。
在OSS路径选择弹框中,点击更改。
点击OSS Bucket名称。
点击新建目录,输入目录名,点击确定。
可以看到OSS路径已经变更成目标目录,点击确定。
点击确定,OSS路径即可配置成功。
6.2 设置存储路径后,重新运行SQL查询语句,可以在运行历史中看到,系统已自动将查询结果以CSV⽂件形式存储至该路径对应的OSS文件夹中。
6.3 下载查询结果。
如果您想下载分析结果至本地,可以点击运行历史数据行中的下载结果按钮。
也可以点击查询结果对话框右侧的下载按钮,将分析结果的csv文件下载至本地进行查看。
- 保存SQL。
通过保存SQL,可以将分析⽤到的SQL进行保存,后续可以直接在已存查询中打开,做进⼀步的调⽤或修改。
7.1 在SQL查询框中,点击保存按钮。
7.2 在保存查询弹窗中,输入名称,点击确定。
7.3 在已存查询列表中,可以看到保存成功的SQL,点击打开,会在SQL查询框中打开该SQL查询窗口,由此可以方便快捷地做进⼀步的调⽤或修改。
6. 了解数据湖的权限控制
数据湖构建后,结合数据权限的功能,我们就可以对数据表、数据库、数据列、函数等资源进行权限配置,以满足不同用户访问不同资源的场景。本步骤主要演示RAM用户授权,其他主体类型的授权流程同样可以进行参考。
- 在DLF控制台左侧导航栏中,展开数据权限,选择数据授权,点击新增授权。
- 主体类型选择RAM用户/角色,主体选择目标RAM用户/角色,授权方式默认为资源授权,资源类型根据需要自行选择,此处选择数据库。
- 数据目录会自动提供,勾选目标数据库,权限配置根据需要自行勾选,点击确定。
- 可以看到已成功给RAM用户/角色进行数据授权。
7. 了解数据湖管理
数据湖构建为你提供了湖管理相关的能力,主要包括Location托管、存储概览、生命周期管理、湖格式自动优化策略能力。
- Location托管。
Location托管可以将数据湖OSS中的存储数据托管到数据湖构建(DLF)中进行管理和分析,在托管Location后将可以为你提供存储概览,生命周期管理介绍,数据表-数据概况(如数据访问频次,数据最后更新时间等),以及存储权限(规划中)等数据湖管理能力。
1.1 左侧导航栏展开湖管理,选择Location托管,点击一键托管。
1.2 在Location 未托管提醒弹窗中,确认OSS路径无误后,点击一键托管。
1.3 点击确定。
1.4 点击确定。
1.5 可以看到目标OSS Bucket已成功开启Location托管。
- 存储概览。
主要针对数据湖内的数据进行统计分析,可以帮助您快速了解数据存储类型分布情况,历史趋势变化,小文件分布等。并帮助您快速的定位到需要优化的数据库和表,以加强对湖内数据的管理和优化。
- 生命周期管理。
生命周期管理支持多种类型的生命周期管理规则,通过建立不同的规则,您可以方便的管理数据湖内的数据生命周期,以便节约存储成本。
3.1 左侧导航栏选择生命周期管理,点击新建规则。
3.2 在新建规则中,输入自定义名称,选择默认数据目录,资源类型自行根据需要选择。
规则详情根据实际情况自行配置,点击下一步。
点击添加库资源。
在添加库资源弹框中,勾选目标库名称,点击添加。
点击确定。
点击确定。
点击去列表查看。
可以看到规则已经成功创建,您可以选择是否执行该规则
- 湖格式。
可以结合您的业务设置合理阈值,禁用或启用优化策略,帮助您优化存储空间,提高查询效率。
8. 清理及后续
清理
完成教程后,请及时清理测试数据和试用资源。
1、OSS,请参考以下场景处理OSS资源:
- 如果无需继续使用对象存储OSS,可以登录对象存储OSS控制台,在Bucket 列表页面,找到目标Bucket,点击Bucket 名称进入详情,选择删除 Bucket,点击确认删除,即可删除Bucket。
- 如果需要继续使用对象存储OSS,请注意个人资源的费用使用情况,确保阿里云账户金额不小于100.00元人民币。
- 欠费后如果在延期免停权益额度内,您的服务将不会受到停服影响。
- 欠费后如果超出了延停权益额度,OSS服务将自动停止,且OSS控制台中的Bucket列表将处于不可见状态。而您所占用的Bucket资源仍会继续扣费,因此欠费会累积。
- 如果您在OSS停服后15天内充值补足欠款,OSS服务会自动启用。
- 如果您在OSS停服后15天内未补足欠款,将视为您主动放弃OSS存储服务,阿里云将终止本产品服务条款并停止为您继续提供服务,您保存在阿里云的全部数据将会被清理删除,且清理后数据不可恢复。请注意,数据清理之前仍会继续计费,若您确认不再使用OSS存储服务,请务必删除OSS上的数据。
2、数据湖DLF,请您完成教程后,参考以下场景处理DLF资源:
- 如果无需继续使用数据湖DLF,可以登录数据湖DLF控制台,在元数据管理列表页面,删除数据库;在元数据抽取列表页面,删除抽取任务;在Location托管列表页面,删除托管任务。注:数据释放后无法找回,如有重要数据请提前备份。
- 如果需要继续使用数据湖DLF,请注意个人资源的费用使用情况,确保阿里云账户金额不小于100.00元人民币。阿里云账号欠费后:
- 用户在欠费的前72小时内,用户已经运行的任务和数据不受影响。但无法进行新建及资源申请相关的操作:
- 不能新建数据源
- 不能新建入湖任务
- 不能新建数据库、表等
- 不能启动入湖任务
- 用户在持续欠费超过72小时后,系统将进一步停止用户对资源的使用:
- 停止运行中的运行任务
- 禁止元数据接口的调用
- 用户在持续欠费超过168小时后,系统会对用户的资源进行释放和删除:
- 删除用户账户下的数据源、入湖任务、元数据(库、表、分区等)
- 控制台页面无法正常访问和使用
后续
您还可以根据希望测试的其它业务场景继续使用对象存储OSS和数据湖DLF。
9. 清理及后续
清理
完成教程后,请及时清理测试数据和试用资源。
1、OSS提供试用时长为3个月的免费资源包,其中标准存储(本地冗余)容量为20GB/3个月,下行流量包为2 GB/3个月,请求包为20万次/3个月,OSS免费试用仅抵扣存储空间内的标准存储(本地冗余)类型文件的存储费用、因访问OSS资源产生的API请求和外网流出流量费用。其他类型存储费用(例如低频访问(本地冗余)容量费用等),使用图片处理服务产生的图片处理费用等均无法抵扣。完成教程后,请参考以下场景处理OSS资源:
- 如果无需继续使用对象存储OSS,可以登录对象存储OSS控制台,在Bucket 列表页面,找到目标Bucket,点击Bucket 名称进入详情,选择删除 Bucket,点击确认删除,即可删除Bucket。
- 如果需要继续使用对象存储OSS,请务必至少在资源包试用到期1小时前为您的阿里云账号充值或购买新的资源包。
- 欠费后如果在延期免停权益额度内,您的服务将不会受到停服影响。
- 欠费后如果超出了延停权益额度,OSS服务将自动停止,且OSS控制台中的Bucket列表将处于不可见状态。而您所占用的Bucket资源仍会继续扣费,因此欠费会累积。
- 如果您在OSS停服后15天内充值补足欠款,OSS服务会自动启用。
- 如果您在OSS停服后15天内未补足欠款,将视为您主动放弃OSS存储服务,阿里云将终止本产品服务条款并停止为您继续提供服务,您保存在阿里云的全部数据将会被清理删除,且清理后数据不可恢复。请注意,数据清理之前仍会继续计费,若您确认不再使用OSS存储服务,请务必删除OSS上的数据。
2、数据湖DLF没有提供免费资源包,使用个人资源,请您完成教程后,参考以下场景处理DLF资源:
- 如果无需继续使用数据湖DLF,可以登录数据湖DLF控制台,在元数据管理列表页面,删除数据库;在元数据抽取列表页面,删除抽取任务;在Location托管列表页面,删除托管任务。注:数据释放后无法找回,如有重要数据请提前备份。
- 如果需要继续使用数据湖DLF,请注意个人资源的费用使用情况,确保阿里云账户金额不小于100.00元人民币。阿里云账号欠费后:
- 用户在欠费的前72小时内,用户已经运行的任务和数据不受影响。但无法进行新建及资源申请相关的操作:
- 不能新建数据源
- 不能新建入湖任务
- 不能新建数据库、表等
- 不能启动入湖任务
- 用户在持续欠费超过72小时后,系统将进一步停止用户对资源的使用:
- 停止运行中的运行任务
- 禁止元数据接口的调用
- 用户在持续欠费超过168小时后,系统会对用户的资源进行释放和删除:
- 删除用户账户下的数据源、入湖任务、元数据(库、表、分区等)
- 控制台页面无法正常访问和使用
后续
在试用有效期期间,您还可以根据希望测试的其它业务场景继续使用对象存储OSS和数据湖DLF。
实验链接:https://developer.aliyun.com/adc/scenario/c46e97cc1ccf4a31881296ee95bb607a