zoukankan      html  css  js  c++  java
  • Oracle存储过程向Hadoop迁移中的问题及方案

    本文记录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语句格式(保留字的大小写问题),等等,

  • 相关阅读:
    java学习笔记(三)
    JAVA 学习笔记(2)
    java学习笔记
    第二次作业完成情况
    第一次作业完成情况
    使用MarkDown标记语言发博客
    《Java高级程序设计》第一周作业
    纪逝去的毕业后的两年时光
    #这是来联系Markdown语法的
    CodeFirst初体验——问题三
  • 原文地址:https://www.cnblogs.com/1394htw/p/9635037.html
Copyright © 2011-2022 走看看