阿里云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 
相关文章
|
7天前
|
人工智能 分布式计算 DataWorks
连续四年!阿里云领跑中国公有云大数据平台
近日,国际数据公司(IDC)发布《中国大数据平台市场份额,2023:数智融合时代的真正到来》报告——2023年中国大数据平台公有云服务市场规模达72.2亿元人民币,其中阿里巴巴市场份额保持领先,占比达40.2%,连续四年排名第一。
45 12
|
13天前
|
人工智能 Cloud Native 数据管理
重磅升级,阿里云发布首个“Data+AI”驱动的一站式多模数据平台
阿里云发布首个AI多模数据管理平台DMS,助力业务决策提效10倍
106 17
|
6天前
|
SQL 人工智能 大数据
首个大数据批流融合国家标准正式发布,阿里云为牵头起草单位!
近日,国家市场监督管理总局、国家标准化管理委员会正式发布大数据领域首个批流融合国家标准 GB/T 44216-2024《信息技术 大数据 批流融合计算技术要求》,该标准由阿里云牵头起草,并将于2025年2月1日起正式实施。
|
7天前
|
SQL 人工智能 大数据
阿里云牵头起草!首个大数据批流融合国家标准发布
近日,国家市场监督管理总局、国家标准化管理委员会正式发布大数据领域首个批流融合国家标准GB/T 44216-2024《信息技术 大数据 批流融合计算技术要求》,该标准由阿里云牵头起草,并将于2025年2月1日起正式实施。
33 1
|
27天前
|
存储 SQL 分布式计算
Java连接阿里云MaxCompute例
要使用Java连接阿里云MaxCompute数据库,首先需在项目中添加MaxCompute JDBC驱动依赖,推荐通过Maven管理。避免在代码中直接写入AccessKey,应使用环境变量或配置文件安全存储。示例代码展示了如何注册驱动、建立连接及执行SQL查询。建议使用RAM用户提升安全性,并根据需要配置时区和公网访问权限。具体步骤和注意事项请参考阿里云官方文档。
|
1月前
|
机器学习/深度学习 数据可视化 大数据
阿里云大数据的应用示例
阿里云大数据应用平台为企业提供高效数据处理与业务洞察工具,涵盖Quick BI、DataV及PAI等核心产品。DT203课程通过实践教学,帮助学员掌握数据可视化、报表设计及机器学习分析技能,提升数据驱动决策能力。Quick BI简化复杂数据分析,DataV打造震撼可视化大屏,PAI支持全面的数据挖掘与算法应用。课程面向CSP、ISV及数据工程师等专业人士,为期两天,结合面授与实验,助力企业加速数字化转型。完成课程后,学员将熟练使用阿里云工具进行数据处理与分析。[了解更多](https://edu.aliyun.com/training/DT203)
|
2月前
|
机器学习/深度学习 存储 人工智能
自动化是解决大数据迁移障碍的答案
自动化是解决大数据迁移障碍的答案
|
2月前
|
存储 分布式计算 大数据
大数据革新在即,阿里云EMR如何布局DeltaLake引领行业潮流?
【8月更文挑战第26天】大数据时代,实时处理与分析能力对企业至关重要。Delta Lake 作为高性能、可靠且支持 ACID 事务的开源存储层,已成为业界焦点。阿里云 EMR 深度布局 Delta Lake,计划深化集成、强化数据安全、优化实时性能,并加强生态建设与社区贡献。通过与 Spark 的无缝对接及持续的技术创新,阿里云 EMR 致力于提供更高效、安全的数据湖解决方案,引领大数据处理领域的发展新方向。
35 3
|
2月前
|
存储 分布式计算 监控
揭秘阿里云EMR:如何巧妙降低你的数据湖成本,让大数据不再昂贵?
【8月更文挑战第26天】阿里云EMR是一种高效的大数据处理服务,助力企业优化数据湖的成本效益。它提供弹性计算资源,支持根据需求调整规模;兼容并优化了Hadoop、Spark等开源工具,提升性能同时降低资源消耗。借助DataWorks及Data Lake Formation等工具,EMR简化了数据湖构建与管理流程,实现了数据的统一化治理。此外,EMR还支持OSS、Table Store等多种存储选项,并配备监控优化工具,确保数据处理流程高效稳定。通过这些措施,EMR帮助企业显著降低了数据处理和存储成本。
49 3
|
2月前
|
存储 分布式计算 大数据
阿里云 EMR 强势助力,与阿里云大数据体系共创辉煌,把握时代热点,开启生态建设之旅
【8月更文挑战第26天】阿里云EMR(Elastic MapReduce)是一种大数据处理服务,与阿里云的多个服务紧密结合,共同构建了完善的大数据生态系统。EMR与对象存储服务(OSS)集成,利用OSS提供可靠、低成本且可扩展的数据存储;与MaxCompute集成,实现深度数据分析和挖掘;还支持数据湖构建服务,加速数据湖的搭建并简化数据管理与分析过程。EMR提供多种编程接口及工具,如Hive、Spark和Flink等,帮助用户高效完成大数据处理任务。
35 2

热门文章

最新文章

相关产品

  • 云原生大数据计算服务 MaxCompute
  • 下一篇
    无影云桌面