阿里云MaxCompute-Hive UDF(Java)迁移上云实践

简介: 阿里云MaxCompute-Hive UDF(Java)迁移上云实践

1. 一小时快速迁移法-兼容Hive

  1. 参考文档:https://help.aliyun.com/zh/maxcompute/user-guide/write-a-hive-udf-in-java#task-2105893
  2. 特点:不需要改动代码,继承自Hive的udf基类,诸如UDF,GenericUDF

1.1. 打包注意事项

MaxCompute兼容的Hive版本为2.1.0,对应Hadoop版本为2.7.2。如果UDF是在其他版本的Hive或Hadoop上开发的,您需要使用兼容的Hive或Hadoop版本重新编译UDF JAR包,详细的pom文件改动如下。

<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec --><dependency><groupId>org.apache.hive</groupId><artifactId>hive-exec</artifactId><version>2.1.0</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common --><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.7.2</version></dependency>

1.2. 使用注意事项

  1. 运行时需设置MaxCompute项目的模式为Hive兼容模式。
set odps.sql.hive.compatible=true;select your_udf();
  1. 由于设置compatible模式导致的odps与hive的函数行为不同的异常可以参考做重点监控:https://developer.aliyun.com/article/1333665?spm=a2c6h.13148508.setting.14.352b4f0eSOaqDn

2. 不兼容的情况

2.1. 读取HDFS或其他DFS

2.1.1. 样例代码

如下样例代码访问HDFS文件:

// 引入依赖importorg.apache.hadoop.conf.Configuration;
importorg.apache.hadoop.fs.FSDataInputStream;
importorg.apache.hadoop.fs.FileSystem;
importorg.apache.hadoop.fs.Path;
// 相关HDFS的访问、读取文件代码FileSystemfs=FileSystem.get(newConfiguration());
FSDataInputStreamis=fs.open(newPath("hdfs:///path/of/file.file"));

2.1.2. 修改方案

MaxCompte底层依赖分布式文件系统-盘古,如上在DFS中读取文件的方式可以在UDF执行过程中通过ODPS-SDK提供的运行时上下文对象ExecutionContext来访问文件资源,具体实现:

  1. 下载文件:hdfs:///path/of/file.file。并通过dataworks或者odpscmd的方式上传archive资源。

image.png

# odpscmdaddarchive<local_file>[as<alias>][comment'<comment>'][-f];
  1. 继承ODPS提供的UDF基类,重写UDF,从ExecutionContext读取文件资源并进行业务逻辑的开发
packagecom.hive_udf;
importcom.aliyun.odps.udf.UDF;
importcom.aliyun.odps.udf.ExecutionContext;
publicclassIp2Location2extendsUDF {
InputStreamin;
@Overridepublicvoidsetup(ExecutionContextctx) throwsUDFException {
try {
in=ctx.readResourceFileAsStream("file");
        } catch (IOExceptione) {
thrownewUDFException(e);
        }
    }
publicStringevaluate(Stringip) {
// do something with `in`    }
}

2.2. 访问外网或服务

MaxCompte(odps)项目名默认不支持访问外网或VPC,可以参考官网文档进行开通:https://help.aliyun.com/zh/maxcompute/user-guide/network-connection-process?spm=a2c4g.11186623.0.i5#section-pfp-oaa-n0f

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
6天前
|
弹性计算
2024年阿里云服务器优惠活动汇总_普惠上云_阿里云优惠
2024年阿里云服务器优惠活动汇总_普惠上云_阿里云优惠,2024阿里云服务器优惠活动政策整理,轻量2核2G3M服务器61元一年、2核4G4M带宽165元1年,云服务器4核16G10M带宽26元1个月、149元半年,阿里云ECS云服务器2核2G3M新老用户均可99元一年续费不涨价,企业用户2核4G5M带宽199元一年,阿里云百科整理2024阿里云优惠活动政策整理、云服务器CPU内存、带宽、系统盘收费价格表
36 0
|
6天前
|
弹性计算 安全 数据库
阿里云优惠活动中心_精选活动_产品优惠_上云首选_普惠好价
阿里云优惠活动中心_精选活动_产品优惠_上云首选_普惠好价
20 0
|
7天前
|
存储 安全 算法
【接口加密】Java中的接口加密实践
【接口加密】Java中的接口加密实践
|
8天前
|
存储 监控 安全
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
为了提供更好的日志数据服务,360 企业安全浏览器设计了统一运维管理平台,并引入 Apache Doris 替代了 Elasticsearch,实现日志检索与报表分析架构的统一,同时依赖 Doris 优异性能,聚合分析效率呈数量级提升、存储成本下降 60%....为日志数据的可视化和价值发挥提供了坚实的基础。
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
|
20天前
|
存储 容灾 安全
在阿里云RDS(Relational Database Service)迁移前准备目标区域选择
在阿里云RDS(Relational Database Service)迁移前准备目标区域选择
18 3
|
7天前
|
存储 数据可视化 数据管理
基于阿里云服务的数据平台架构实践
本文主要介绍基于阿里云大数据组件服务,对企业进行大数据平台建设的架构实践。
299 0
|
1天前
|
存储 安全 网络协议
2024阿里云上云采购季活动,云服务器计算型c8a、通用型g8i/g8a/g8y实例区别及价格参考
在阿里云2024年的上云采购季活动中,除了以往活动中有的轻量应用服务器和经济型e、通用算力型u1、计算型c7、通用型g7实例之外,阿里云还新增了计算型c8a、通用型g8i/g8a和g8y实例规格,这些都是具有超高性能的AMD&Intel&倚天第八代云服务器,那么这几个云服务器实例规格的性能及适用场景是怎样的呢?本文为大家介绍阿里云计算型c8a、通用型g8i/g8a和g8y实例规格性能及适用场景。
2024阿里云上云采购季活动,云服务器计算型c8a、通用型g8i/g8a/g8y实例区别及价格参考
|
2天前
|
监控 Java 开发者
Java性能优化实践:提升你的应用效率
【2月更文挑战第12天】 在当今快速发展的软件行业中,性能优化是每个Java开发者都必须面对的挑战。本文将深入探讨Java性能优化的关键策略,从代码层面到架构设计,全方位提升应用的运行效率。我们将通过具体案例,展示如何诊断性能瓶颈、优化内存管理、提高并发处理能力,以及采用最新的Java技术栈改善应用性能。加入我们的旅程,一起探索如何让你的Java应用飞速运行。
8 2
|
2天前
|
存储 弹性计算 人工智能
2024阿里云开年采购优惠活动,云服务器99计划可领上云代金券
2024阿里云开年采购优惠活动,云服务器99计划可领上云代金券,2024年阿里云3月优惠「开年采购季」云服务器价格表和优惠券领取,99计划云服务器99元一年起、免费领取上云扶持优惠券,不只是云服务器、云数据库、存储、云电脑、域名等均有活动
|
2天前
|
设计模式 缓存 Java
Java新时代:微服务架构下的性能优化实践
【2月更文挑战第12天】 在当今快速发展的软件工程领域,微服务架构因其灵活性和可扩展性而成为主流。随着应用程序变得日益复杂,性能优化成为了开发者不可回避的挑战。本文将探讨在Java环境下,利用微服务架构进行性能优化的策略和实践。我们将从微服务的基本概念出发,深入分析如何通过设计模式、数据库优化、缓存机制以及并发处理等手段,有效提升Java应用的性能。此外,本文还将分享一些实际案例,以帮助读者更好地理解和应用这些优化技术。

相关产品

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