简要说明
2024年云栖大会,MaxCompute 多项重磅产品新功能邀测发布,新特性包括 支持OpenLake的湖仓一体2.0、Object Table支持SQL或MaxFrame处理非结构化数据、Delta Table增量表格式、基于增量物化视图的增量计算、MCQA2.0 SQL引擎查询加速等。其相关特性将在中国区 公共云 北京、上海、杭州、深圳Region 上线开放试用。邀测注册入口
本文以最佳实践的方式,帮助您创建MaxCompute和周边产品 在Openlake解决方案demo中需要准备的实例、项目和开发环境,并完成配置。欢迎您玩转云栖邀测demo,体验新功能。
本文以深圳为例。
环境准备
创建DLF2.0 Catalog
登录 https://dlf-next.console.aliyun.com/cn-shenzhen/metadata
创建dlf2.0 catalog
创建完成
创建DW工作空间
登录 https://dataworks.console.aliyun.com/workspace/create?step=0®ionId=cn-shenzhen&fromPath=%2Fworkspace%2Flist
创建工作空间时注意打开“参加数据开发(DataStudio)(新版)公测”开关
完成后要求绑定MC计算资源
创建并绑定MC 外部项目,映射DLF2.0 Catalog
点击新建项目
选择外部项目,选择Openlake(DLF2)类型
新建外部数据源,并使用ExecuteWithUserAuth认证方式
外部数据源的 DLF EndPoint一定填经典网络地址,格式举例:dlfnext-share.cn-shenzhen.aliyuncs.com
映射刚创建的dlf catalog
外部项目创建完成
登录mc管控台查看 https://maxcompute.console.aliyun.com/cn-shenzhen/project-list
DW绑定MC计算资源
创建并绑定MC 内部项目
点击DW项目空间
在计算资源分页中点击绑定计算资源
创建云栖邀测内部项目
注意使用MC云栖邀测功能,需要从邀测入口进行region粒度的注册,注册入口 。
注册后,该用户可以在注册region的mc管控台创建项目,选择云栖邀测项目
或者在dw绑定计算资源 - 新建内部项目,选择云栖邀测项目
创建云栖邀测项目后在DW绑定
确认完成绑定
创建Holo实例和Database
Holo实例版本需要3.0.6或以上
新建数据库
注意开启数据湖加速
等待处理完成后,重启holo实例即可使用。
DW工作空间绑定Holo实例和Database
绑定holo的内部数据库
绑定数据目录
在Holo中建表
写入一条数据
创建MC External Schema映射Holo Database和Schema
登录mc管控台 租户管理 外部数据源 https://maxcompute.console.aliyun.com/cn-shenzhen/tenant-manage/external-data-source
创建映射Holo database的foreign server
名称 :openlake_demo_es2Holo_sz_fs
holo db:openlake_demo_sz_db
ramrole:acs:ram::uid:role/aliyunodpsHolorole
创建完成
MC SQL创建外部Schema,映射Holo database.schema
CREATE EXTERNAL SCHEMA lakehouse_yunqi_demo_sz.openlake_demo_es2Holo
with openlake_demo_es2Holo_sz_fs
ON 'public' ;
查看外部Schema属性
通过外部Schema查询Holo数据
创建Holo External Database映射DLF2.0 Catalog和MC Project
在sql编辑器或notebook中,执行Hologres sql
创建external database映射dlf catalog
其中dlf catalog是dlf catalog的id
DROP EXTERNAL DATABASE IF EXISTS openlake_demo_Holo;
COMMIT;
CREATE EXTERNAL DATABASE openlake_demo_Holo
WITH
metastore_type 'dlf-paimon'
dlf_region 'cn-shenzhen'
dlf_endpoint 'dlfnext-pre.cn-shenzhen.aliyuncs.com'
dlf_catalog 'clg-paimon-90xxxxxxxxxxxxxxx84'
;
COMMIT;
创建external schema,即在dlf Catalog 中创建 dlf database
DROP EXTERNAL SCHEMA IF EXISTS openlake_demo_Holo.github_events;
CREATE EXTERNAL SCHEMA IF NOT EXISTS openlake_demo_Holo.github_events;
COMMIT;
创建paimon table 用于存放相关数据
DROP EXTERNAL TABLE IF EXISTS openlake_demo_Holo.github_events.ods_github_events_raw;
CREATE EXTERNAL TABLE openlake_demo_Holo.github_events.ods_github_events_raw
(
col text,
ds text
)
WITH (
"changelog-producer"='none',
"bucket"=6,
"bucket-key"='ds'
);
创建external database映射mc project
DROP EXTERNAL DATABASE BIGDATA_PUBLIC_DATASET;
CREATE EXTERNAL DATABASE BIGDATA_PUBLIC_DATASET
WITH
metastore_type 'maxcompute'
mc_project 'BIGDATA_PUBLIC_DATASET' ;
COMMIT;
从MC公共数据集向湖表写入数据
INSERT INTO openlake_demo_Holo.github_events.ods_github_events_raw
SELECT
col,
ds
FROM
BIGDATA_PUBLIC_DATASET.github_events.ods_github_events_odps_string
WHERE
ds = to_char(CURRENT_DATE, 'YYYY-MM-DD');
数据目录挂载MC Project
选择数据目录,点击添加项目,选择另一个外部项目或内部项目,点击批量添加
已经绑定的项目已经自动挂载
可以看到内部项目和外部项目的schema和表
holo的挂载方法相同
准备Notebook个人开发环境
使用Notebook需要购买通用资源组
启动后注意检查是否和工作空间绑定
完成个人开发环境实例创建
注意配置专有网络,要和holo在同一个vpc vsw和安全组下
完成创建后即可以使用。
注意notebook个人目录如果提示vsix扩展,请点击右键安装
创建OSS Bucket
登录 https://oss.console.aliyun.com/bucket
新建bucket object-table-bucket
新建目录
上传文件
请上传txt、pds、wav等非结构化数据
demo中解析的pdf样例demoday.pdf,以及其他非结构化文件样例 可以下载unstruct data.zip,解压并上传到object table映射的oss bucket 和路径ot_openlake 中
创建MC Object Table
在dw 新版数据开发新建目录和sql
创建object table ddl
--MaxCompute SQL
set odps.namespace.schema = true;
create object table lakehouse_yunqi_demo_sz.default.ot_openlake_demo
with serdeproperties (
'odps.properties.rolearn'='acs:ram::1xxxxxxxxxx9:role/aliyunodpsdefaultrole')
location 'oss://oss-cn-shenzhen-internal.aliyuncs.com/object-table-bucket/ot_openlake/';
上传MC资源并创建非结构化数据处理UDF
下载云栖版本cmd
http://odps.alibaba-inc.com/official_downloads/odpscmd/0.46.8/
下载资源
pdf_tools_cp37.tar.gz
放在odps_clt_release_64\bin目录下
use lakehouse_yunqi_demo_sz;
add py binary_pdf2png.py -f;
add py binary_pdf2text.py -f;
add archive pdf_tools_cp37.tar.gz -f;
create function pdf2png as binary_pdf2png.ExtractPDFPages using 'binary_pdf2png.py, pdf_tools_cp37.tar.gz' -f;
create function pdf2text as binary_pdf2text.ExtractPDFText using 'binary_pdf2text.py, pdf_tools_cp37.tar.gz' -f;
上传完成后可在数据目录中查看
开发
基于Openlake和Object table,MC使用SQL进行非结构化数据处理
MaxCompute将Openlake上的一个存了各种类型非结构化数据文件的OSS bucket path映射为一张Object Table,抽取非结构化数据元信息后缓存在Object Table的Metadata中。
使用MaxCompute SQL分析Object Table中各类文件的数量,按照文件类型大小排序,单独过滤某种类型的文件,并通过内置文件下载函数,读取非结构化数据内容转为MD5。
最后使用udf提取文本的非结构化数据处理函数,将结尾为demoday.pdf文件,提取内容到文本字段,提取信息与原始文件内容相同。
基于OpenLake和Object table的非结构化数据处理
湖仓融合:Maxcompute与Hologres基于OpenLake的湖上解决方案
基于github events数据,模拟了Hologres在Openlake湖上建Paimon表,将数据加载入ODS原始表;
使用MaxCompute MaxFrame对原始数据进行探查,看到内容是json格式的原始文件,不便于分析;
并使用MaxCompute SQL 读取原始Paimon表,将Json格式的github events记录,转化成结构化宽表,并写回Openlake的DWD表中。
Hologres基于DWD表和MaxCompute数仓中的维度表,关联生成ADS层的Dynamic Table。
对Dynamic Table进行多维度OLAP分析,统计了最近时期的github项目热度、人员活跃度、最近最频繁的操作情况,并使用漏斗函数进行行为转化分析。
创建