简要概述:
MaxCompute是一种云原生类大数据解决方案技术,本人在官方提供的产品文档的基础上,对于该产品进行了两部分的测试;包含在本地环境使用maxframe和基于maxframe实现大模型语言处理。通过这俩部分的实践操作,我相信可以更深度理解该技术所带给我们的技术和优势。
在正式开始实践之前,建议熟悉下阿里云官方文档,这对于我们熟悉概念与相关技术内容有很大帮助
云原生大数据计算服务 MaxCompute
第一部分:在本地环境中使用MaxFrame
该部分内容主要为了先理解安装步骤,在正式使用之前,我们得有一个正确的配置环境,这也是为了第二步模拟实践作为铺垫
附上官网详情说明链接 在本地环境使用MaxFrame
- 通过Python官网安装相对应的版本,我这里安装的是3.11.4版
- 接着执行以下命令
pip install --upgrade maxframe
#通过pip命令安装MaxFrame客户端。
python -c "import maxframe.dataframe as md"
#命令检查MaxFrame是否安装成功。若无返回值或报错信息,则表示安装成功。
AI 代码解读
完成后如下图所示则为安装Python成功
在MaxCompute创建自己的项目
这里的项目名称后面会用到 记住自己的项目名称
获取AccessKey ID 和 AccessKey Secret
在访问控制页面获取 RAM访问控制AK SK 只能查看一次,记得保存下来,这两个参数也会在后面用到
获取endpoint
在左边功能栏的endpoint管理可以获取到这里的endpoint后面也会使用到
经过前面四个步骤,我们已经获取到了 项目名称、AK、SK、EndPoint 四个参数,接下来就可以进行实践操作了!
1, 在本地创建一个.py后缀的文件,写入并运行以下代码
import os
import maxframe.dataframe as md
from odps import ODPS
from maxframe import new_session
# 创建MaxCompute入口
o = ODPS(
# 确保 ALIBABA_CLOUD_ACCESS_KEY_ID 环境变量设置为用户 Access Key ID,
# ALIBABA_CLOUD_ACCESS_KEY_SECRET 环境变量设置为用户 Access Key Secret,
# 不建议直接使用AccessKey ID和 AccessKey Secret字符串。
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
project='your-default-project',
endpoint='your-end-point',
)
table = o.create_table("test_source_table", "a string, b bigint", if_not_exists=True)
with table.open_writer() as writer:
writer.write([
["value1", 0],
["value2", 1],
])
# 创建MaxFrame session
session = new_session(o)
df = md.read_odps_table("test_source_table",index_col="b")
df["a"] = "prefix_" + df["a"]
# 打印dataframe数据
print(df.execute().fetch())
# MaxFrame DataFrame数据写入MaxCompute表
md.to_odps_table(df, "test_prefix_source_table").execute()
# 销毁 maxframe session
session.destroy()
AI 代码解读
然后打开CMD窗口,执行
python C:\Users\Lenovo\Desktop\test.py
# 这里要输入你创建Python文件的路径
AI 代码解读
在这里我报错了,检查原因是没有添加AK,SK的环境变量;
在CMD窗口输入配置环境变量,输入你对应的AK SK
set ALIBABA_CLOUD_ACCESS_KEY_ID=your-access-id
set ALIBABA_CLOUD_ACCESS_KEY_SECRET=your-secret-access-key
AI 代码解读
然后进行环境变量验证
echo %ALIBABA_CLOUD_ACCESS_KEY_ID%
echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%
AI 代码解读
有出现自己的AK,SK之后,这就表示配置完成了。
接着执行后如下图,成功运行:
2,通过IDEA安装 MaxCompute studio
具体步骤可以参考官网教程,这里就不过多赘述
安装MaxCompute Studio
- 安装成功后,执行语句
SELECT * FROM test_prefix_source_table;
AI 代码解读
至此,第一部分本地安装使用MaxFrame操作已完成。
第二部分:基于MaxFrame实现大语言模型数据处理
第一部分我们已经在本地完成了操作实践,对于相关的环境和操作步骤有了熟悉的了解。第二部分主要操作是为了进一步体验该产品,运用到实际运用中
同样,在开始操作之前需要提前阅读下官方操作文档
①操作步骤指导
基于MaxFrame实现大语言模型数据处理
②根据概述了解schema名称,这对后面操作也有一定的帮助。
公开数据集概述
- 在第一部分的项目sql editor中执行以下语句
运行成功后如图--开启Session级Schema语法 set odps.namespace.schema=true; --查询表llm_redpajama_github_demo_data中的200条数据 select * from bigdata_public_dataset.data_science.llm_redpajama_github_demo_data limit 200;
AI 代码解读 创建一个.py结尾的文件,然后输入以下代码执行
import os import time import numpy as np import maxframe.dataframe as md from odps import ODPS from maxframe import new_session # from maxframe.udf import with_resource_libraries from maxframe.config import options from maxframe import config o = ODPS( # 确保 ALIBABA_CLOUD_ACCESS_KEY_ID 环境变量设置为用户 Access Key ID, # ALIBABA_CLOUD_ACCESS_KEY_SECRET 环境变量设置为用户 Access Key Secret, # 不建议直接使用AccessKey ID和 AccessKey Secret字符串。 os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'), project='aliyuntest115', endpoint='https://service.cn-shanghai.maxcompute.aliyun.com/api', ) config.options.sql.settings = { "odps.session.image": "common" } def clean_copyright(row): import re pat = re.compile('/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/') cpat = re.compile('copyright', re.IGNORECASE) text = row['content'] if not text: return row r = pat.search(text) if r: span = r.span() sub = text[span[0]:span[1]] if cpat.search(sub): # cut it text = text[:span[0]] + text[span[1]:] row['content'] = text return row lines = text.split('\n') skip = 0 for k in range(len(lines)): if (lines[k].startswith('//') or lines[k].startswith('#') or lines[k].startswith('--') or not lines[k]): skip = skip + 1 else: break if skip: text = '\n'.join(lines[skip:]) row['content'] = text return row def maxframe_job(): s_time = time.time() table_name = 'bigdata_public_dataset.data_science.llm_redpajama_githu b_demo_data' session = new_session(o) print('session id: ', session.session_id) df = md.read_odps_table(table_name, index_col='id') df = df.apply( clean_copyright, axis=1, # row output_type="dataframe", ) out_table = 'tmp_mf_clean_copyright' md.to_odps_table(df, out_table).execute() session.destroy() maxframe_job()
AI 代码解读
- 运行python文件
- 然后同样在sql editor执行sql语句
SELECT * FROM tmp_mf_clean_copyright limit 200 #后面的limit 200 记得加上,如果不加会报错
AI 代码解读
如图可以看到,相关的敏感信息已经祛除,那么我们这次实践就成功完成了~
体验感受
- 做了两个实操,给我的整体感受就是阿里云的产品以及文档做的很详细很详细!对于每个步骤已经注意的事项都有相关的描述和说明,即使完全没啥经验的小白,也可以轻松上手操作。
- 再就是分布式Python计算服务MaxFrame,通过部署和项目实操,也算是比较深度的体验吧。
一是费用完全不用担心,按量付费,这比较省心,了解自己的业务量就大概清楚需要多少成本。
二是方便&便捷,使用方式是简单易懂的;当然我本次只用来本地环境来搭建,后续会尝试换一个平台来搭建体验一下~
总体来说,如果之前没有使用过MaxCompute,这次试用很值得体验一次!