阿里云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

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
11月前
|
人工智能 Cloud Native 算法
拔俗云原生 AI 临床大数据平台:赋能医学科研的开发者实践
AI临床大数据科研平台依托阿里云、腾讯云,打通医疗数据孤岛,提供从数据治理到模型落地的全链路支持。通过联邦学习、弹性算力与安全合规技术,实现跨机构协作与高效训练,助力开发者提升科研效率,推动医学AI创新落地。(238字)
694 7
|
存储 数据采集 搜索推荐
Java 大视界 -- Java 大数据在智慧文旅旅游景区游客情感分析与服务改进中的应用实践(226)
本篇文章探讨了 Java 大数据在智慧文旅景区中的创新应用,重点分析了如何通过数据采集、情感分析与可视化等技术,挖掘游客情感需求,进而优化景区服务。文章结合实际案例,展示了 Java 在数据处理与智能推荐等方面的强大能力,为文旅行业的智慧化升级提供了可行路径。
Java 大视界 -- Java 大数据在智慧文旅旅游景区游客情感分析与服务改进中的应用实践(226)
|
存储 SQL 分布式计算
大数据之路:阿里巴巴大数据实践——元数据与计算管理
本内容系统讲解了大数据体系中的元数据管理与计算优化。元数据部分涵盖技术、业务与管理元数据的分类及平台工具,并介绍血缘捕获、智能推荐与冷热分级等技术创新。元数据应用于数据标签、门户管理与建模分析。计算管理方面,深入探讨资源调度失衡、数据倾斜、小文件及长尾任务等问题,提出HBO与CBO优化策略及任务治理方案,全面提升资源利用率与任务执行效率。
893 0
|
存储 监控 大数据
大数据之路:阿里巴巴大数据实践——事实表设计
事实表是数据仓库核心,用于记录可度量的业务事件,支持高性能查询与低成本存储。主要包含事务事实表(记录原子事件)、周期快照表(捕获状态)和累积快照表(追踪流程)。设计需遵循粒度统一、事实可加性、一致性等原则,提升扩展性与分析效率。
1002 0
|
数据采集 SQL 搜索推荐
大数据之路:阿里巴巴大数据实践——OneData数据中台体系
OneData是阿里巴巴内部实现数据整合与管理的方法体系与工具,旨在解决指标混乱、数据孤岛等问题。通过规范定义、模型设计与工具平台三层架构,实现数据标准化与高效开发,提升数据质量与应用效率。
4091 0
大数据之路:阿里巴巴大数据实践——OneData数据中台体系
|
存储 SQL Apache
网易云信 x Doris:降本70%、提速11倍, 统一 ES/InfluxDB/Hive 多技术栈的落地实践
网易云信引入 Apache Doris 统一了原有 Elasticsearch、InfluxDB 和 Hive 多技术栈系统。凭借其高性能和易扩展的特点,提供一站式的数据存储和分析服务。实现机器成本降低 70%、实时场景查询提速 11 倍、离线任务耗时缩短 80% 的显著收益。
990 0
|
存储 搜索推荐 算法
Java 大视界 -- Java 大数据在智慧文旅旅游线路规划与游客流量均衡调控中的应用实践(196)
本实践案例深入探讨了Java大数据技术在智慧文旅中的创新应用,聚焦旅游线路规划与游客流量调控难题。通过整合多源数据、构建用户画像、开发个性化推荐算法及流量预测模型,实现了旅游线路的精准推荐与流量的科学调控。在某旅游城市的落地实践中,游客满意度显著提升,景区流量分布更加均衡,充分展现了Java大数据技术在推动文旅产业智能化升级中的核心价值与广阔前景。
|
存储 分布式计算 大数据
大数据之路:阿里巴巴大数据实践——大数据领域建模综述
数据建模解决数据冗余、资源浪费、一致性缺失及开发低效等核心问题,通过分层设计提升性能10~100倍,优化存储与计算成本,保障数据质量并提升开发效率。相比关系数据库,数据仓库采用维度建模与列式存储,支持高效分析。阿里巴巴采用Kimball模型与分层架构,实现OLAP场景下的高性能计算与实时离线一体化。
1365 0
|
SQL 缓存 监控
大数据之路:阿里巴巴大数据实践——实时技术与数据服务
实时技术通过流式架构实现数据的实时采集、处理与存储,支持高并发、低延迟的数据服务。架构涵盖数据分层、多流关联,结合Flink、Kafka等技术实现高效流计算。数据服务提供统一接口,支持SQL查询、数据推送与定时任务,保障数据实时性与可靠性。
2120 0
Java 大视界 —— 基于 Java 的大数据隐私保护在金融客户信息管理中的实践与挑战(178)
本文探讨了基于 Java 的大数据隐私保护技术在金融客户信息管理中的应用与挑战。随着金融行业数字化转型加速,客户信息的安全性愈发重要。文章详细分析了数据加密、脱敏、访问控制、区块链及联邦学习等关键技术,并结合实际案例展示了其在金融机构中的应用效果,为金融科技从业者提供了宝贵的实践经验与技术参考。

热门文章

最新文章

相关产品

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