目录
- 引言uqNqjoe
- 一、引入依赖
- 二、配置文件 application.properties(信息用自己的奥)
- 三、实体类User.Java
- 四、UserController
- 五、UserService
- 六、UserDao
- 七、UserDao.XML
- 八、postman 访问,成功查询数据
- 附件(修改和删除数据)
- 总结
引言
MaxComputer本质上是管理dataworks 中的表,我们如何用Java框架来操作MaxComputer中的表数据呢,有几种方法,今天我推荐的是MaxComputer结合Spring Boot ;MyBATis 的操作方式,这种方法优点是很简单,不用学习新的API 数据mybatis 操作即可。
首先要在阿里云后台创建一张表,下面我用user 表测试
https://maxcompute.console.aliyun.com/cn-shanghai/sql-express

一、引入依赖
<!-- spring boot 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--添加阿里云的依赖-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.0</version>
</dependency>
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-udf</artifactId>
<version>0.36.4-public</version>
</dependency>
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-core</artifactId>
<version>0.36.4-public</version>
编程客栈 </dependency>
<!-- MyBatis 依赖 -->
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<!-- MaxCompute JDBC 连接驱动 -->
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-jdbc</artifactId>
<version>3.2.0</version>
</dependency>
二、配置文件 application.properties(信息用自己的奥)
其中用户名和密码就是 AccessKeyId和 accessKeySecret
spring.application.name= huixin-dataworks # ??? server.port= 8080 aliyun.accessKeyId= aliyun.accessKeySecret=N8rsIEWSH6AwinhfDp8shiDEHhRbpD aliyun.endpoint= http://service.cn-shanghai.maxcompute.aliyun.com/api aliyun.project= liingniu_2023 # MaxCompute 数据源配置 spring.datasource.url=jdbc:odps:http://service.cn-shanghai.maxcompute.aliyun.com/api?project=liingniu_2023 spring.datasource.username= spring.datasource.password=N8rsIEWSH6AwinhfDp8shiDEHhRbpD spring.datasource.driver-class-name=com.aliyun.odps.jdbc.OdpsDriver # MyBatis 配置 mybatis.mapper-locations=classpath:mapper/*.xml
三、实体类User.java
package com.huixin.model;
public class User {
private Integer id;
private String name;
public User(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User() {
android }
}
四、UserController
package com.huixin.controller;
import com.huixin.model.User;
import com.huixin.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api")
public class UserController {
@Autowired
private UserService userService;
/**
* 查询数据
* @return
*/
@GetMapping("/users")
public List<User> getUsers() {
return userService.selectAll();
}
}
五、UserService
package com.huixin.service;
import com.huixin.dao.UserDao;
import com.huixin.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserDao userDao;
public List<User> selectAll(){
return userDao.getAllUsers();
}
}
六、UserDao
package com.huixin.dao;
import com.huixin.model.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* <p>Project: huixin-dataworks - UserDao</p>
* <p>Powered by webrx On 2025-02-27 08:41:08</p>
* <p>描述:<p>
*
* @author 简单遗忘 [814736551@qq.com]
* @version 1.0
* @since 17
*/
@Mapper
public interface UserDao {
List<User> getAllUsers();
}
七、UserDao.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"&gjst;
<mapper namespace="com.huixin.dao.UserDao">
<select id="getAllUsers" resultType="com.huixin.model.User">
SELECT id, name FROM user LIMIT 10
</select>
</mapper>
八、postman 访问,成功查询数据

附件(修改和删除数据)
MaxCompute 是一个 分布式大数据计算平台,主要用于 批量处理,并不支持像传统数据库那样的 实时更新、删除 操作。
它的设计更多地侧重于批处理和大规模数据查询,因此,MaxCompute 中并不直接支持 UPDATE 和 DELETE 操作。
修改
但是可以使用其他方法修改数据(这个语句只修改了 id 为3 的数据其他的不影响)
INSERT OVERWRITE TABLE user
SELECT
id,
CASE
WHEN id = 3 THEN '杨逍'
ELSE name
END AS name
FROM user;
删除
方法一:分区删除
假设 user 表是按 dt 分区的,现在你想删除 dt = '20250227' 的数据。这样会删除整个分区的数据。
ALTER TABLE user DROP PARTITION (dt = '20250227');
方法二:覆盖删除
如果你不使用分区或需要删除特定的数据,最常见的方法是通过 INSERT OVERWRITE 覆盖数android据,将不需要的数据排除。
示例:删除 id = 3 的数据
INSERT OVERWRITE TABLE user SELECT * FROM user WHERE id != 3;
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
加载中,请稍侯......
精彩评论