You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取具备完整线性代数方法的Flink ML DenseVector API?

问题原因梳理

你遇到的API差异源于Flink ML的版本演进与结构重构:

  • Flink 1.3的org.apache.flink.ml.math.DenseVector是早期旧实现,仅保留基础点积方法,已被弃用。
  • Flink 1.12的org.apache.flink.ml.common.linalg.DenseVector是Flink ML并入Flink主项目阶段的实现,将求和、范数等线性代数方法直接封装在类中。
  • Flink ML 2.x(独立为子项目后)的org.apache.flink.ml.linalg.DenseVector做了API重构,把线性代数操作从类本身移到了VectorOperators工具类,并非功能缺失,只是调用方式改变。

解决方案

若想直接使用类自带的sum()、norm()等方法,引入对应版本的依赖(需与Flink核心版本匹配):

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-ml-lib_2.12</artifactId>
    <version>1.12.7</version> <!-- 选择1.12系列的稳定版本 -->
</dependency>

此时导入类为org.apache.flink.ml.common.linalg.DenseVector,可直接调用其内置线性代数方法。

若倾向使用最新Flink ML版本,通过VectorOperators工具类实现所需操作:

import org.apache.flink.ml.linalg.DenseVector;
import org.apache.flink.ml.linalg.VectorOperators;

// 示例:求和、L2范数、点积
DenseVector vector = new DenseVector(new double[]{1.0, 2.0, 3.0});
double sum = vector.reduce(VectorOperators.SUM);
double l2Norm = vector.norm(VectorOperators.L2_NORM);
double dotProduct = vector.dot(new DenseVector(new double[]{4.0, 5.0, 6.0}));

依赖可使用最新稳定版:

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-ml-lib_2.12</artifactId>
    <version>2.2.0</version>
</dependency>

内容的提问来源于stack exchange,提问作者drsealks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 01:50:21