使用 Maven 快速构建 Alink 项目

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
简介: 刚发布的 Alink 1.1.0 版本,支持发布到 Maven Central,Java 开发者通过 Maven 可以快速搭建 Alink 机器学习项目。本文将演示一个简单的构建方案,便于爱好者快速入门。

刚发布的 Alink 1.1.0 版本,支持发布到 Maven Central,Java 开发者通过 Maven 可以快速搭建 Alink 机器学习项目。本文将演示一个简单的构建方案,便于爱好者快速入门。

先说一下相关的环境,Windows 系统,使用的 Jave 编辑器是 InterlliJ IDEA(Version 2019.3.2),Java SDK 的版本为 1.8。

第一步,创建项目

在 InterlliJ IDEA 中选择创建新项目,并选择 Maven,如下图所示:

11.jpg

使用默认选项,不用勾选"Create from archetype",点击"Next"按钮,进入下图所示页面,这里只需填写 Name 项,其它内容会自动关联生成。

22.jpg

最后,点击"Finish"按钮,就完成了 Maven 工程的创建。

我们在 InterlliJ IDEA 编辑器中可以看到整个项目的结构如下:

13.jpg

我们查看 pom.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>AlinkMavenExample</artifactId>
    <version>1.0-SNAPSHOT</version>


</project>

第二步,HelloAlink

在开始引入 Alink 相关 jar 包前,我们先进行一个小实验,运行简单的打印输出。在 src -> main -> java 下新建一个 package: "org.example",再新建一个 Java Class:

"HelloAlink.java"
package org.example;

public class HelloAlink {
    public static void main(String[] args) {
        System.out.println("Hello Alink!");
    }
}

运行该代码,结果正常打印。

然后,我们在看一下 maven 打包的情况,进入 IDEA 的 Maven 窗口,如下图所示:

14.jpg

在 Maven 窗口中点击执行"package"操作,操作正常执行完成。在该项目文件夹的 target 子文件夹下可以看到打包出来的 AlinkMavenExample-1.0-SNAPSHOT.jar。

第三步,修改 POM 文件,导入 Alink 相关 jar 包

这是本文中最重要的环节,在 POM 文件中设置 Alink 相关的 dependency,从而在项目中可以使用 Alink 库函数。

可以从如下两个地址中找到 Alink1.1.0 的 dependency 设置:

[1]https://github.com/alibaba/Alink#java-接口使用介绍
[2]https://zhuanlan.zhihu.com/p/109896804

其实,Alink 提供了两个设置方案,分别针对 Flink 1.10 和 Flink 1.9 版本,这里我们选择针对 Flink 最新版本的方案。复制 dependency 项,并粘贴到 POM 的 ... 中,改动后的 POM 文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>AlinkMavenExample</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>com.alibaba.alink</groupId>
            <artifactId>alink_core_flink-1.10_2.11</artifactId>
            <version>1.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-scala_2.11</artifactId>
            <version>1.10.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-planner_2.11</artifactId>
            <version>1.10.0</version>
        </dependency>
    </dependencies>

</project>

这是 IDEA 会弹出小窗如下:

15.jpg

选择"Import Changes",需要等待一段时间,将所需的 jar 包下载到本地 maven 仓库。

第四步,构建运行

参考 Alink 的 Java 例子:

[3]https://github.com/alibaba/Alink/blob/master/examples/src/main/java/com/alibaba/alink/KMeansExample.java

在当前项目中新建 KMeansExample.java,保留当前的 package 路径package org.example;,将 Alink 例子中的其它代码直接复制过来。代码如下:

package org.example;

import com.alibaba.alink.operator.batch.BatchOperator;
import com.alibaba.alink.operator.batch.source.CsvSourceBatchOp;
import com.alibaba.alink.pipeline.Pipeline;
import com.alibaba.alink.pipeline.clustering.KMeans;
import com.alibaba.alink.pipeline.dataproc.vector.VectorAssembler;

/**
 * Example for KMeans.
 */
public class KMeansExample {

    public static void main(String[] args) throws Exception {
        String URL = "https://alink-release.oss-cn-beijing.aliyuncs.com/data-files/iris.csv";
        String SCHEMA_STR = "sepal_length double, sepal_width double, petal_length double, petal_width double, category string";

        BatchOperator data = new CsvSourceBatchOp().setFilePath(URL).setSchemaStr(SCHEMA_STR);

        VectorAssembler va = new VectorAssembler()
                .setSelectedCols(new String[]{"sepal_length", "sepal_width", "petal_length", "petal_width"})
                .setOutputCol("features");

        KMeans kMeans = new KMeans().setVectorCol("features").setK(3)
                .setPredictionCol("prediction_result")
                .setPredictionDetailCol("prediction_detail")
                .setReservedCols("category")
                .setMaxIter(100);

        Pipeline pipeline = new Pipeline().add(va).add(kMeans);
        pipeline.fit(data).transform(data).print();
    }
}

然后,选择运行 KMeansExample.main(),可看到正常的输出结果如下(显示篇幅关系,只保留了头两条和末尾 2 条数据):

category|prediction_result|prediction_detail
--------|-----------------|-----------------
Iris-setosa|0|0.49148233882941467 0.3017994492572307 0.2067182119133547
Iris-versicolor|1|0.3249474882831926 0.396327539544579 0.2787249721722284
......
Iris-virginica|2|0.13906038938197507 0.38042216584746935 0.4805174447705556
Iris-virginica|1|0.18304443868954268 0.43146730855314785 0.38548825275730947

以上,即可完成 Alink 项目的创建。

■ 版本更新下载及 Github 送 Star ■
https://github.com/alibaba/Alink

以上分享希望对你有所帮助,了解更多 Alink 上手实践文章,更多Alink技术交流可钉钉扫描下方二维码加入交流群:

Alink 开源用户群.jpg

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
目录
相关文章
|
1月前
|
Java 项目管理 Maven
Maven项目管理与构建自动化完全指南
Maven彻底改变了Java项目管理方式,通过POM模型、依赖管理和标准化构建流程,大幅提升开发效率。本文深入解析其核心概念、多模块管理、私服搭建及与Spring Boot、Docker等现代技术栈的集成实践,助力开发者实现高效、规范的项目构建与团队协作。
Maven项目管理与构建自动化完全指南
|
4月前
|
Java 区块链 Maven
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
486 3
|
3月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
282 0
|
Java Maven 开发者
maven项目中官方setting.xml文件
`settings.xml` 是 Maven 的配置文件,用于定义用户或全局级别的构建行为。它包含本地仓库路径、网络代理、服务器认证、仓库镜像及构建配置文件等设置,帮助开发者根据环境定制 Maven 行为,提升构建效率与灵活性。
920 0
|
6月前
|
Java 测试技术 项目管理
【JavaEE】从 0 到 1 掌握 Maven 构建 Java 项目核心技巧 解锁 Java 项目高效管理实用实例
本文从Maven基础概念讲起,涵盖安装配置、核心概念(如POM与依赖管理)及优化技巧。结合Java Web项目实例,演示如何用Maven构建和管理项目,解决常见问题,助你高效掌握这一强大工具,提升Java开发与项目管理能力。适合初学者及进阶开发者学习。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
237 6
|
12月前
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
551 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
952 8
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
1758 3
|
缓存 IDE Java
idea的maven项目打包时没有source下的文件
【10月更文挑战第21天】idea的maven项目打包时没有source下的文件
852 1

热门文章

最新文章

推荐镜像

更多