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

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*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。
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
2月前
|
消息中间件 分布式计算 大数据
大数据-123 - Flink 并行度 相关概念 全局、作业、算子、Slot并行度 Flink并行度设置与测试
大数据-123 - Flink 并行度 相关概念 全局、作业、算子、Slot并行度 Flink并行度设置与测试
149 0
|
3天前
|
SQL DataWorks 数据可视化
阿里云DataWorks评测:大数据开发治理平台的卓越表现
阿里云DataWorks是一款集数据集成、开发、分析与管理于一体的大数据平台,支持多种数据源无缝整合,提供可视化ETL工具和灵活的任务调度机制。其内置的安全体系和丰富的插件生态,确保了数据处理的高效性和安全性。通过实际测试,DataWorks展现了强大的计算能力和稳定性,适用于中小企业快速搭建稳定高效的BI系统。未来,DataWorks将继续优化功能,降低使用门槛,并推出更多灵活的定价方案,助力企业实现数据价值最大化。
|
3天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
17 2
|
29天前
|
存储 分布式计算 大数据
【赵渝强老师】阿里云大数据生态圈体系
阿里云大数据计算服务MaxCompute(原ODPS)提供大规模数据存储与计算,支持离线批处理。针对实时计算需求,阿里云推出Flink版。此外,阿里云还提供数据存储服务如OSS、Table Store、RDS和DRDS,以及数据分析平台DataWorks、Quick BI和机器学习平台PAI,构建全面的大数据生态系统。
68 18
|
1月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
2月前
|
算法 大数据 数据库
云计算与大数据平台的数据库迁移与同步
本文详细介绍了云计算与大数据平台的数据库迁移与同步的核心概念、算法原理、具体操作步骤、数学模型公式、代码实例及未来发展趋势与挑战。涵盖全量与增量迁移、一致性与异步复制等内容,旨在帮助读者全面了解并应对相关技术挑战。
54 3
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
82 3
|
3月前
|
人工智能 分布式计算 DataWorks
连续四年!阿里云领跑中国公有云大数据平台
近日,国际数据公司(IDC)发布《中国大数据平台市场份额,2023:数智融合时代的真正到来》报告——2023年中国大数据平台公有云服务市场规模达72.2亿元人民币,其中阿里巴巴市场份额保持领先,占比达40.2%,连续四年排名第一。
256 12
|
3月前
|
人工智能 Cloud Native 数据管理
重磅升级,阿里云发布首个“Data+AI”驱动的一站式多模数据平台
阿里云发布首个AI多模数据管理平台DMS,助力业务决策提效10倍
480 17
|
3月前
|
SQL 人工智能 大数据
阿里云牵头起草!首个大数据批流融合国家标准发布
近日,国家市场监督管理总局、国家标准化管理委员会正式发布大数据领域首个批流融合国家标准GB/T 44216-2024《信息技术 大数据 批流融合计算技术要求》,该标准由阿里云牵头起草,并将于2025年2月1日起正式实施。
102 7

相关产品

  • 云原生大数据计算服务 MaxCompute
  • 下一篇
    DataWorks