本文记录Oracle存储过程向Hadoop迁移中遇到的问题及响应的解决办法,作为初学者,文中内容有不妥之处欢迎指正,

1、不支持IN中的子查询,
Solution,使用INNER JOIN将子查询操作添加到WHERE子句之前,
2、因脚本中同时使用hive(即HQL)语句和SQL语句,注释不能混用,
Solution,脚本的hive语句中的注释中应该是“#”,子句中不能出现“--”,否则会使脚本运行出现执行异常;同时注意/**/注释的使用,
3、脚本中语句末尾是否需要标点需要严格检查,
Solution,根据语法判断,对比前后语句的格式是否一致,
4、脚本中不要出现英文分号,因为hive会认为英文分号为语句结束符,英文分号之后的语句会被认为新的执行语句,即便是在注释中,
5、平台搭建时设置了set hive.groupby.skewindata=true;解决数据平衡问题,但执行中出现“DISTINCT on different columns not supported with skew in data”问题,
Solution,DISTINCT问题,删除hive语句中配置的“set hive.groupby.skewindata=true;”
6、hive语句中不支持NULLIF,
Solution,NULLIF(t1, '**') 可以用下面的语句替换
if(t1= '**',null,t1)
7、hive语句中不支持DECODE
DECODE(A,'1','1','2','2','0') 可转换为
CASE WHEN A = '1' THEN '1' WHEN A = '2' THEN '2' ELSE '0' END
8、只报空指针错误,
Solution,可先不查询数据结果,先列表检查最终检索字段,各个需要UNION ALL拼接结果的字段是否一致;拼接字段一致,仍报空指针时可查询数据进一步检查,

当SELECT查询的列的字段名相同时会报“字段名歧义”错误,应同时为两个字段添加别名,

所以团队联合开发脚本前最好约定好一些通用规范,比如,脚本中针对hive语句和SQL语句如何使用注释,规范SQL语句格式(保留字的大小写问题),等等,

Oracle存储过程向Hadoop迁移中的问题及方案的更多相关文章

  1. Oracle存储过程中异常Exception的捕捉和处理

    Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...

  2. Oracle存储过程中异步调用的实际操作步骤

    本文标签:Oracle存储过程 我们都知道在Oracle数据库的实际应用的过程中,我们经常把相关的业务处理逻辑,放在Oracle存储过程中,客户端以通过ADO来进行相关的调用  .而有些相关的业务逻辑 ...

  3. Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset

    原文 Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset DataSet相当你用的数据库: DataTable相当于你的表.一个 DataSet 可以包含多个 DataTab ...

  4. 项目中oracle存储过程记录——经常使用语法备忘

    项目中oracle存储过程记录--经常使用语法备忘 项目中须要写一个oracle存储过程,需求是收集一个复杂查询的内容(涉及到多张表),然后把符合条件的记录插入到目标表中.当中原表之中的一个的日期字段 ...

  5. java中如何调用oracle存储过程

    在java中使用CallableStatement调用存储过程 列: 创建需要的测试表:create table Test(tid varchar2(10),tname varchar2(10)): ...

  6. ORACLE存储过程中%TYPE和%ROWTYPE的区别

    ORACLE存储过程中%TYPE和%ROWTYPE的区别 在存储过程中%TYPE和%ROWTYPE常用来在PL/SQL中定义变量 因为 t_emp emp%rowtype ;这个语句的意思是 定义一个 ...

  7. Oracle存储过程中跳出循环的写法

    注:本文来源于: <  Oracle存储过程中跳出循环的写法   > Oracle存储过程中跳出循环的写法 记录exit和return的用法 1:exit用来跳出循环 loop IF V_ ...

  8. java 实现往oracle存储过程中传递array数组类型的参数

    注:本文来源于 <  java 实现往oracle存储过程中传递array数组类型的参数  >最近项目中遇到通过往存储过程传递数组参数的问题, 浪费了N多个小时,终于有点头绪. 具体的代码 ...

  9. .NET Core中使用Dapper操作Oracle存储过程最佳实践

    为什么说是最佳实践呢?因为在实际开发中踩坑了,而且发现网上大多数文章给出的解决方法都不能很好地解决问题.尤其是在获取类型为OracleDbType.RefCursor,输出为:ParameterDir ...

随机推荐

  1. GoLang-Rpc编程

    Rpc定义: RPC(Remote Procedure Call,远程过程调用)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络细节的应用程序通信协议. RPC协议构建于TCP或UDP, ...

  2. Git Gerrit使用

    Git Gerrit 操作都用 git bash操作: 如果想用 cmd 或者 PowerShell,系统环境变量 Path 添加 Git 安装路径,如: C:\Program Files (x86) ...

  3. 跨站请求伪造 | ajax

    一.简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功 ...

  4. CSS布局-flex布局入门教程

    前言 2009年,W3C 提出了一种新的方案----Flex 布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能. 查询兼容 F ...

  5. [物理学与PDEs]第4章习题1 反应力学方程组形式的化约 - 动量方程与未燃流体质量平衡方程

    试证明: 利用连续性方程, 可将动量方程 (2. 14) 及未燃流体质量平衡方程 (2. 16) 分别化为 (2. 19) 与 (2. 20) 的形式. 证明: 注意到 $$\beex \bea \c ...

  6. Filebeat+ELK部署文档

    在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的Filebeat+ELK开源实时日志分析平台的记录过程,有不对的地方还望指出. 简单介绍: 日志主要包括系统日志.应用 ...

  7. 鼠标右键添加Sublime Text

    鼠标右键添加Sublime Text 参考 将sublime添加到鼠标右键 实践 1. win+R 输入regedit 2. 输入路径: 计算机\HKEY_CLASSES_ROOT\*\shell\ ...

  8. 记事本 HTML

    又学了一遍HTML,感觉轻松了好多,个人感觉HTML和画画差不多,只要有了想法,画出来其实并不难. 头部信息<head> 头部信息并不是给我们看的,而是给浏览器看的,当浏览器看到之后,才好 ...

  9. C语言官网蓝桥杯训练1115DNA

    这道题是比较简单的输出字符图形的题,但是有几个坑还是要注意下. 1.题中所述的X是大写的,不要看成小写了.(我就错了好几次) 2.每一行输出最后的X后不能在输出空格. 3.输出两个DNA中间有一个空行 ...

  10. crontab每隔1天执行【转】

    有个需求,crontab任务需要每隔1天执行,有俩个方法,如下: 第一种方法,利用crontab执行 */ * * shellscript 但是这种方法有个问题,就是有个月份有31天,导致本月31号和 ...