用Java代码调用MaxCompute

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 有什么办法把MaxCompute的作业、设置和自己的代码做无缝集成呢,MaxComput SDK就能干这个。本文就实际的工作中最常见的几个场景,做一些示例。

MaxCompute的客户端的工具odpscmd是好东西,什么都能干。但是它不方便在自己的代码做很好的集成,毕竟它是个Shell脚本。那有什么办法把MaxCompute的作业、设置和自己的代码做无缝集成呢,MaxComput SDK就能干这个。本文就实际的工作中最常见的几个场景,做一些示例。详细的使用可以在Maven上下到SDK的文档说明
其实这里面的很多写法都是文档里有的,或者在帮助文档里有写过类似的例子。这里就做算是做个整理吧。

对象操作

其实官方的SDK文档里,对这方面的介绍是最多的了,可以参考这里。这里我再针对实际场景里的比较多的创建表和分区做个例子,相信看完这些后对这方面就没有疑惑了

        String access_id = "your access id";
        String access_key = "your access key";
        String endpoint = "http://service.odps.aliyun.com/api";
        String project = "testproject";
        String tableName = "testCreate";
        String partition = "ds='20170614'";
        
        Account account = new AliyunAccount(access_id, access_key);
        Odps odps = new Odps(account);
        odps.setEndpoint(endpoint);
        odps.setDefaultProject(project);


        TableSchema schema = new TableSchema();
        schema.addColumn(new Column("col_str",OdpsType.STRING,"column string"));
        schema.addColumn(new Column("col_datetime",OdpsType.DATETIME,"column datetime"));
        schema.addColumn(new Column("col_int",OdpsType.BIGINT,"column bigint"));
        schema.addColumn(new Column("col_double",OdpsType.DOUBLE,"column double"));
        schema.addColumn(new Column("col_boolean",OdpsType.BOOLEAN,"column boolean"));
        schema.addPartitionColumn(new Column("ds",OdpsType.STRING,"partition column"));
        
        
        PartitionSpec ps= new PartitionSpec(partition);
        
        try {
            odps.tables().create(tableName, schema);
            odps.tables().get(tableName).createPartition(ps);
        } catch (OdpsException e) {
            e.printStackTrace();
        }


odps@ testproject>desc testCreate;

+------------------------------------------------------------------------------------+
| Owner: ALIYUN$cloudtecengr@aliyun.com | Project: testproject                                  |
| TableComment:                                                                      |
+------------------------------------------------------------------------------------+
| CreateTime:               2017-06-14 20:00:48                                      |
| LastDDLTime:              2017-06-14 20:00:48                                      |
| LastModifiedTime:         2017-06-14 20:00:48                                      |
+------------------------------------------------------------------------------------+
| InternalTable: YES      | Size: 0                                                  |
+------------------------------------------------------------------------------------+
| Native Columns:                                                                    |
+------------------------------------------------------------------------------------+
| Field           | Type       | Label | Comment                                     |
+------------------------------------------------------------------------------------+
| col_str         | string     |       | column string                               |
| col_datetime    | datetime   |       | column datetime                             |
| col_int         | bigint     |       | column bigint                               |
| col_double      | double     |       | column double                               |
| col_boolean     | boolean    |       | column boolean                              |
+------------------------------------------------------------------------------------+
| Partition Columns:                                                                 |
+------------------------------------------------------------------------------------+
| ds              | string     | partition column                                    |
+------------------------------------------------------------------------------------+

OK
odps@ testproject>show partitions  testCreate;

ds=20170614

OK
AI 代码解读

SQL

上文的提到的SDK文档里有个例子,可以用来提交SQL。

另外前面提到的创建表的操作,也可以用这里的SQLTask跑Create Table的SQL来实现。

说到SQL就少不了要说JDBC,目前有基于SQLTask开源做了个JDBC的实现,可以参考这里

授权

授权不能直接用SQLTask来做,不过有类似的方法

    com.aliyun.odps.security.SecurityManager securityManager = odps.projects().get().getSecurityManager();
    String res = securityManager.runQuery("grant all on table wc_in to user aliyun$xxxxxxxxx@aliyun.com;", false);
AI 代码解读

MapReduce

针对这个问题,我写了一篇文档可以参考下

Graph

图计算我们把这个功能写进了产品文档,可以参考这里。这里的ss.setLocalRun(false);如果是Ture就是本地调试,如果是false就是在云上跑作业。

Tunnel

Tunnel可以参考Tunnel SDK对应章节,本文不再展开说明。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
打赏
0
0
0
1
79046
分享
相关文章
Java 大数据在智能教育在线实验室设备管理与实验资源优化配置中的应用实践
本文探讨Java大数据技术在智能教育在线实验室设备管理与资源优化中的应用。通过统一接入异构设备、构建四层实时处理管道及安全防护双体系,显著提升设备利用率与实验效率。某“双一流”高校实践显示,设备利用率从41%升至89%,等待时间缩短78%。该方案降低管理成本,为教育数字化转型提供技术支持。
45 0
Java 大视界 -- 基于 Java 的大数据可视化在城市地下管网管理与风险预警中的应用(275)
本文系统阐述 Java 与大数据可视化技术在城市地下管网管理中的应用,涵盖数据采集、三维建模、风险预警及性能优化,结合真实案例提供可落地的技术方案。
Java 大视界 -- Java 大数据在智能教育学习社区用户互动分析与社区活跃度提升中的应用(274)
本文系统阐述 Java 大数据技术在智能教育学习社区中的深度应用,涵盖数据采集架构、核心分析算法、活跃度提升策略及前沿技术探索,为教育数字化转型提供完整技术解决方案。
Java 大视界 -- Java 大数据在智能安防入侵检测系统中的多源数据融合与分析技术(171)
本文围绕 Java 大数据在智能安防入侵检测系统中的应用展开,剖析系统现状与挑战,阐释多源数据融合及分析技术,结合案例与代码给出实操方案,提升入侵检测效能。
Java 大视界 -- 基于 Java 的大数据分布式存储在视频监控数据管理中的应用优化(170)
本文围绕基于 Java 的大数据分布式存储在视频监控数据管理中的应用展开,分析管理现状与挑战,阐述技术应用,结合案例和代码给出实操方案。
Java 大视界 -- Java 大数据在智慧文旅虚拟场景构建与沉浸式体验增强中的技术支撑(168)
本文围绕 Java 大数据在智慧文旅领域的应用展开,系统阐述了数据采集、3D 建模、游客行为分析等核心技术的原理与实现,结合实际案例,全方位展示了 Java 大数据在推动智慧文旅发展中的显著价值。
Java 大视界 -- 基于 Java 的大数据实时流处理在工业物联网设备状态监测中的应用与挑战(167)
本文围绕基于 Java 的大数据实时流处理技术,深入探讨其在工业物联网设备状态监测中的应用与挑战。不仅介绍了技术架构、原理和案例,还引入边缘计算技术,提出应对数据质量、性能和安全等问题的策略。
Java 大视界 -- Java 大数据机器学习模型在金融衍生品定价中的创新方法与实践(166)
本文围绕 Java 大数据机器学习模型在金融衍生品定价中的应用展开,分析定价现状与挑战,阐述技术原理与应用,结合真实案例与代码给出实操方案,助力提升金融衍生品定价的准确性与效率。
Java 大视界 -- Java 大数据机器学习模型在金融衍生品定价中的创新方法与实践(166)
Java 大视界 -- Java 大数据在智能农业无人机植保作业路径规划与药效评估中的应用(165)
本文围绕 Java 大数据在智能农业无人机植保作业路径规划与药效评估中的应用展开,剖析作业现状与挑战,阐述技术原理及应用方法,结合案例与代码,给出具有实操性的解决方案。
Java 大视界 -- Java 大数据在智能农业无人机植保作业路径规划与药效评估中的应用(165)
基于Java 17 + Spring Boot 3.2 + Flink 1.18的智慧实验室管理系统核心代码
这是一套基于Java 17、Spring Boot 3.2和Flink 1.18开发的智慧实验室管理系统核心代码。系统涵盖多协议设备接入(支持OPC UA、MQTT等12种工业协议)、实时异常检测(Flink流处理引擎实现设备状态监控)、强化学习调度(Q-Learning算法优化资源分配)、三维可视化(JavaFX与WebGL渲染实验室空间)、微服务架构(Spring Cloud构建分布式体系)及数据湖建设(Spark构建实验室数据仓库)。实际应用中,该系统显著提升了设备调度效率(响应时间从46分钟降至9秒)、设备利用率(从41%提升至89%),并大幅减少实验准备时间和维护成本。
86 0

相关产品

  • 云原生大数据计算服务 MaxCompute
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等

    登录插画

    登录以查看您的控制台资源

    管理云资源
    状态一览
    快捷访问