阿里云MaxCompute-Hive作业迁移语法兼容性踩坑记录

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 阿里云MaxCompute-Hive作业迁移语法兼容性踩坑记录

1. MaxCompute兼容模式

背景:CDH Hive作业迁移到MaxCompute,SQL语法多数相同,但是部分函数存在行为差异,使用compatible模式可以以Hive模式运行SQL,达到平迁、最小化改动、快速上云降低成本的目的。

相关hint:set odps.sql.hive.compatible=true;

相关参考文档:https://help.aliyun.com/zh/maxcompute/user-guide/differences-in-sql-statements-between-the-maxcompute-v1-0-data-type-edition-and-hive-compatible-data-type-edition?spm=a2c4g.11186623.0.i1

2. 函数行为不同

2.1. unix_timestamp

  1. 【报错】Semantic analysis exception - function unix_timestamp cannot match any overloaded functions with (STRING)
  2. 【解决】Hive兼容模式运行或者更改函数的入参类型

2.2. udf

  1. 【报错】FAILED: ODPS-0130071:[9,8] Semantic analysis exception - invalid type org.apache.hadoop.io.Text for function UDF definition
  2. 【解决】Hive兼容模式运行或者重写udf

2.3. date_format

  1. 【报错】FAILED: ODPS-0121125:Not Support DatetimeFunc date_format(string, string) yet, please run in hive compatible mode
  2. 【解决】Hive兼容模式运行或者更改函数的入参类型

2.4. 除0溢出

  1. 【报错】FAILED: ODPS-0121145:Data overflow - Div result is nan, two params are 0.000000 and 0.000000
  2. 【解决】Hive兼容模式返回INF,落表为null,ODPS则会报错如上所示。可以无脑加compatible保持原hive逻辑执行的策略。

2.5. from_unixtime

  1. odps与hive语法参数不同,hive可以通过第二个参数指定format返回string,odps默认ymd-hms的返回,要根据format看下是否要添加date_format(, string ),或者直接无脑compatible模式
  2. odps与hive函数返回类型不同,odps为datetime,hive为string,这个不用管,datetime类型落表会转换为string
-- hivefrom_unixtime(unix_timestamp(concat(translate(order_date,'/','-'),' 00:00:00')),'yyyy-MM-dd')as order_date,-- odpsdate_format(from_unixtime(unix_timestamp(concat(translate(order_date,'/','-'),' 00:00:00'))),'yyyy-MM-dd')as order_date,

2.6. ucase

  1. 【报错】FAILED: ODPS-0010000:System internal error - fuxi job failed, caused by: StdException:ScalarFnCall::doCodegen fail, scalar function name: UCASE, funcSig: S_S_
  2. 【解决】hive ucase同toupper
-- hive,ucase(t.store_no)-- odps,toupper(t.store_no)

2.7. 正则相关,如:regexp_replace

  1. 从报错信息看,} 前面的四个转义符 \\\\,转义之后还有两个\\,实际是不需要4个转义符的,2个即可。如图二所示。原脚本中使用4个转义符,目前判断和set -e方式执行SQL有关系,那种方式相当于转义两次,故需要4个转义符。
  2. MaxCompute正则表达式规范及注意事项参考:https://help.aliyun.com/zh/maxcompute/user-guide/regular-expressions?spm=a2c4g.11186623.0.i14

image.png

2.8. substring

  1. hive的起始index是0,odps的起始是1,如果为0,则返回null,sql不会报错,但是数据结果会不符合预期,主要表现在截取字段进行关联时,inner join后input size为0。
相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
6天前
|
运维 Java Devops
阿里云云效操作报错合集之在进行GitLab代码分支迁移时遇到报错,一般是什么原因
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
25天前
|
分布式计算 DataWorks MaxCompute
DataWorks产品使用合集之需要将mysql 表(有longtext类型字段) 迁移到odps,但odps好像没有对应的类型支持,该怎么办
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
14天前
|
人工智能 分布式计算 DataWorks
首批!阿里云 MaxCompute 完成中国信通院数据智能平台专项测试
2024年5月31日,在中国信通院组织的首批数据智能平台专项测试中,阿里云数据智能平台解决方案(MaxCompute、DataWorks、PAI)顺利完成测试。
85 5
首批!阿里云 MaxCompute 完成中国信通院数据智能平台专项测试
|
6天前
|
持续交付 开发工具 git
阿里云云效产品使用问题之在云效代码域中gitlab使用docker安装的,迁移时遇到“获取企业信息失败”,是什么原因
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
12天前
|
存储 分布式计算 专有云
MaxCompute产品使用问题之阿里公有云的数据如何迁移到阿里专有云
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
29 10
|
5天前
|
分布式计算 Cloud Native 大数据
《阿里云产品四月刊》—云原生大数据计算服务 MaxCompute 新功能
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
|
6天前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用问题之如何在新版本的云效上迁移老版本的流水线
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
阿里云云效产品使用问题之如何在新版本的云效上迁移老版本的流水线
|
11天前
|
分布式计算 大数据 关系型数据库
MaxCompute产品使用问题之如何确保上游作业完成后再运行下游作业
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
9天前
|
SQL 人工智能 API
openai停止中国的api服务,但是性能相当的阿里云免费提供迁移
OpenAI暂停中国API服务,阿里云百炼响应迅速,提供免费tokens(2200万)与迁移服务给受影响开发者。Qwen2-72B与GPT-4同列全球第四(HELM MMLU榜)。Qwen-plus调用成本仅GPT-4的1/50。阿里云百炼以开放性著称,兼容LlamaIndex等,支持多种数据源及自定义组件,加速AI应用集成。官网有丰富资源,助力快速上手大模型开发。
|
2月前
|
安全 Linux 网络安全
其他云平台的业务迁移到阿里云最新优惠,使用服务器迁移中心SMC快速迁移简介
越来越多的个人和企业希望将部署在其他云平台或者IDC企业的业务迁移到阿里云上,对于这部分用户来说,最为关注的问题就是迁移到阿里云有没有什么优惠,迁移过程是否麻烦,针对这部分用户的需求,阿里云推出了5亿算力补贴,针对迁移用户做出补贴优惠,在迁移过程中,用户可以自行做数据传输迁移,也可以使用阿里云的服务器迁移中心,快速完成迁移。本文为大家介绍其他云服务商的业务迁移到阿里云最新优惠政策,以及使用服务器迁移中心实现快速迁移的方法。
其他云平台的业务迁移到阿里云最新优惠,使用服务器迁移中心SMC快速迁移简介

相关产品

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