MaxCompute-Java自建UDF入门详解

简介: MaxCompute-Java自建UDF入门详解

准备环境


1. 安装JDK


建议安装JDK 1.8以上版本



2. 安装开发工具


本文档测试使用IDEA工具,具体安装方式可以参考在线资料。



开发流程


1. 创建项目


创建MaxCompute Studio项目:在MaxCompute Studio项目下创建MaxCompute Java Module,如下所示


<?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>com.aliyun.odps.myJava</groupId>
    <artifactId>MyFirstModel</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>com.aliyun.odps</groupId>
            <artifactId>odps-sdk-core</artifactId>
            <version>${sdk.version}</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.odps</groupId>
            <artifactId>odps-sdk-udf</artifactId>
            <version>${sdk.version}</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.odps</groupId>
            <artifactId>odps-udf-local</artifactId>
            <version>${sdk.version}</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.odps</groupId>
            <artifactId>odps-sdk-mapred</artifactId>
            <version>${sdk.version}</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.odps</groupId>
            <artifactId>odps-mapred-local</artifactId>
            <version>${sdk.version}</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.odps</groupId>
            <artifactId>odps-sdk-graph</artifactId>
            <version>${sdk.version}</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.odps</groupId>
            <artifactId>odps-graph-local</artifactId>
            <version>${sdk.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.28.odps</version>
        </dependency>
    </dependencies>
    <properties>
        <sdk.version>0.36.4-public</sdk.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
</project>


2. 开发UDF


注意在哪个目录下创建的类,注册的时候注意下类所在的位置)。为了区分,我们创建两个UDF类做验证对比学习,如下所示:



3. 本地测试

创建测试类,在本地测试,并验证结果符合预期,如下所示:

public class MyUDFTest {
    @Before
    public void start() {
        System.out.println("start");
    }
    @After
    public void end() {
        System.out.println("end");
    }
    @Test
    public void testMyUDF() {
        MyUDF myFirstUDF = new MyUDF();
        System.out.println(myFirstUDF.evaluate("zhangsan"));
    }
    @Test
    public void testMyUDFCopy() {
        MyUDFCopy myUDFCopy = new MyUDFCopy();
        System.out.println(myUDFCopy.evaluate("zhangsan"));
    }
}



4. 本地打包


pom文件添加  <packaging>jarpackaging>, 双击执行Maven命令打jar包,如下所示:


打包后这里可以看到对应jar包,如下所示:  


5. 上传资源并提交


登录Dataworks数据开发控制台,上传资源并提交(开发环境测试可以先不发布),如下所示:



6. 注册函数并提交

登录Dataworks数据开发控制台,创建函数并提交(开发环境测试可以先不发布)。测试验证写了两个类,注意注册配置的区别,如下所示:



7. 创建SQL节点执行验证

SELECT MYUDF("zhangsan"),MYUDFCOPY("zhangsan");


获取代码

由于测试的代码逻辑较为简单, 需要根据实际场景自行编辑逻辑,注意针对入参做下空值处理

import com.aliyun.odps.udf.UDF;
public class MyUDF extends UDF {
    public String evaluate(String s) {
        return "hello"+ s;
    }
}
package com.aliyun;
import com.aliyun.odps.udf.UDF;
public class MyUDFCopy extends UDF {
    public String evaluate(String s) {
        return "hi:"+ s;
    }
}


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
5天前
|
JSON NoSQL Java
Redis入门到通关之Java客户端SpringDataRedis(RedisTemplate)
Redis入门到通关之Java客户端SpringDataRedis(RedisTemplate)
35 0
|
5天前
|
Java
Java编程语言入门指南
Java编程语言入门指南
16 1
|
3天前
|
算法 Java C++
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
|
3天前
|
SQL Java 数据处理
实时计算 Flink版产品使用合集之怎么热加载Java和Python的UDF
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
11 1
|
3天前
|
SQL Java 数据处理
实时计算 Flink版产品使用合集之如何动态加载Java udf的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
11 0
|
3天前
|
算法 Java Python
保姆级Java入门练习教程,附代码讲解,小白零基础入门必备
保姆级Java入门练习教程,附代码讲解,小白零基础入门必备
|
5天前
|
SQL Java 关系型数据库
零基础轻松入门Java数据库连接(JDBC)
零基础轻松入门Java数据库连接(JDBC)
13 0
|
5天前
|
存储 安全 算法
Java一分钟之-Java集合框架入门:List接口与ArrayList
【5月更文挑战第10天】本文介绍了Java集合框架中的`List`接口和`ArrayList`实现类。`List`是有序集合,支持元素重复并能按索引访问。核心方法包括添加、删除、获取和设置元素。`ArrayList`基于动态数组,提供高效随机访问和自动扩容,但非线程安全。文章讨论了三个常见问题:索引越界、遍历时修改集合和并发修改,并给出避免策略。通过示例代码展示了基本操作和安全遍历删除。理解并正确使用`List`和`ArrayList`能提升程序效率和稳定性。
11 0
|
5天前
|
Java API 开发工具
java与Android开发入门指南
java与Android开发入门指南
16 0
|
5天前
|
Java
Java一分钟之-类与对象:面向对象编程入门
【5月更文挑战第8天】本文为Java面向对象编程的入门指南,介绍了类与对象的基础概念、常见问题及规避策略。文章通过代码示例展示了如何定义类,包括访问修饰符的适当使用、构造器的设计以及方法的封装。同时,讨论了对象创建与使用时可能遇到的内存泄漏、空指针异常和数据不一致等问题,并提供了相应的解决建议。学习OOP需注重理论与实践相结合,不断编写和优化代码。
30 1