问题1:请问机器学习PAI的alink支持keyby吗?我要根据不同用户id训练模型输出结果。问题2:EcodOutlier4GroupbatchOp也可以有这个效果吗?
问题一:是的,机器学习PAI的alink支持keyBy
操作。keyBy
操作是Flink中的一个非常重要的操作,用于将数据流按照指定的键(Key)进行分区,将具有相同Key的数据分到同一个分区中,这样在后续的操作中可以对同一分区内的数据进行各种计算和转换操作,增加处理效率。
在机器学习PAI的alink中,keyBy
操作可以使用StreamDAG
中的KeyByOp
节点实现,例如下面的代码片段:
import ai_flow as af
from ai_flow_plugins.job_plugins.flink import FlinkJobConfig, FlinkPythonJob
from ai_flow_plugins.job_plugins.flink.flink_job_config import FlinkJobType
conf = FlinkJobConfig(job_name='flink job with keyBy',
job_type=FlinkJobType.PYTHON)
with af.config() as cfg:
source = af.user_define_operation(
executor=FlinkPythonJob(
package_path='flink_job_with_keyby.py',
job_class='FlinkJobWithKeyBy'
),
dag=af.current_dag(),
op_args={
'input': af.output_of(prev_op),
'output': example_path
},
job_config=conf
)
op_keyed = af.key_by(source, key=['key'], partition=1)
sink = af.hadoop_write(
input=op_keyed.output[0],
path=sink_path,
write_format=af.WriteFormat.CSV
)
其中,key_by
函数接收一个Op
节点以及一个键列表作为参数,返回一个KeyByOp
节点,表示将Op
节点生成的数据流按照键列表进行分区。
上述代码片段中使用了FlinkPythonJob
来定义Flink作业,也可以使用其他类型的Flink作业和Flink任务。
问题二:EcodOutlier4GroupbatchOp不支持keyby功能。它是一个用于异常检测的组批量操作算子,可以将输入数据集分成若干组,在每个组内进行异常检测并输出异常结果。在进行异常检测时,EcodOutlier4GroupbatchOp根据输入数据集的schema和参数,对每个组内的样本进行单独的异常检测,不能使用keyby对数据进行分组。如果需要使用keyby对数据进行分组,可以使用其他支持keyby的算子,如GroupByKeyBatchOp等。
针对问题1的回答:ECOD算法是支持的。EcodOutlierStreamOp 直接接这个,指定group参数就行了。针对问题2的回答:这个需要前边加groupbyop,聚合成mtable的,再EcodOutlier4GroupbatchOp才可以。此回答整理自钉群“Alink开源--用户群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
人工智能平台 PAI(Platform for AI,原机器学习平台PAI)是面向开发者和企业的机器学习/深度学习工程平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务,内置140+种优化算法,具备丰富的行业场景插件,为用户提供低门槛、高性能的云原生AI工程化能力。