文章来源:http://www.itnose.net/detail/6032777.html
更多文章:http://www.itnose.net/type/97.html
在将ORACLE存储过程迁移到HIVE平台时,不可避免地会遇到各种问题。
ORACLE与HIVE都使用SQL语句,但是语法和特性不尽相同,本文简述了几个迁移时需要注意的地方。
一.INSERT语句
ORACLE:
EXECUTE IMMEDIATE 'TRUNCATE TABLE TABLE_A'; INSERT /*+APPEND*/ INTO A NOLOGGING ( COL_1, COL_2, COL_3, )
迁移至HIVE语句为:
INSERT OVERWRITE TABLE TABLE_A;
OVERWRITE关键字声明插入数据时覆盖原有数据,和TRUNCATE清空表数据再INSERT效果相同。
注意HIVE插入表时不能指定插入的字段,因为HIVE存储的是非结构化的数据。
二.表关联
ORACLE:
SELECT /*+PARALLEL (A,8)*/ * FROM A, B ,C WHERE A.COL_1 = B.COL_1(+) AND A.COL_1 = C.COL_1(+)
迁移至HIVE语句为:
SELECT * FROM A LEFT OUTER JOIN B ON A.COL_1 = B.COL_1 LEFT OUTER JOIN C ON A.COL_1 = C.COL_1
ORACLE注释/*+PARALLEL (A,8)*/需要删除,左关联的语法需要改为HIVE的关联语法。
ORACLE和HIVE的各种关联语法对比,请移步
http://blog.csdn.net/henryfabrgeas/article/details/24689935
三.表的别名
ORACLE:
SELECT * FROM (SELECT * FROM A) GROUP BY COL_1
当需要类似的子查询语句时,迁移至HIVE时需要给子查询起别名,否则会报语法错误。
迁移至HIVE语句为:
SELECT * FROM (SELECT * FROM A) B GROUP BY B.COL_1
四.HIVE特性
在迁移的时候,会遇到一些HIVE的特性导致无法顺利迁移,如下ORACLE语句:
SELECT * FROM A GROUP BY A.COL_1 HAVING COUNT(DISTINCT A.COL_2) = 2
在HIVE中运行会遇到如下报错:
FAILED: SemanticException [Error 10002]: Line 19:22 Invalid column reference 'COL_2'
去掉DISTINCT后可以正常执行。
属于HIVE的特性导致的问题,HAVING子句中无法使用DISTINCT关键字,在迁移中需要进行取舍。
五.报错
1.迁移后字段数据类型有误,需要修改数据类型。
FAILED: SemanticException [Error 10016]: Line 28:5 Argument type mismatch 'COL_1': The expression after ELSE should have the same type as those after THEN: "int" is expected but "double" is found
2.
org.apache.hadoop.hive.ql.parse.SemanticException: Big Table Alias is null
关联时主表数据为空,需要插入数据再进行测试。
相关推荐
由于公司要把oracle 数据库迁移到hive ,hbase 环境,特建议使用kettle做数据迁移,调试3个小时,终于调试成功,顺手写了个配置文档。
由于大数据里面涉及到非关系型数据库如hive、kudu、hbase等的数据迁移,目前涉及到的迁移工具都没有支持hive数据库的事务表的迁移,如果hive库里面存在大量的事务表的时候,目前的工具都是不支持的,例如华为的CDM,...
1.数据迁移的过程中,由于hive的Null值存储为"\N",Mysql存储为NULL值,二者转换时需要注意,再数据迁移json模板中,"nullFormat": "\\N", 该配置信息就是解决了数据迁移是存在的Null值。 2.如果hive中没有数值DataX...
通过学习将Oracle和Hive的常用函数整理出来做了个对比,提供他们各自支持的常用函数。
Sqoop导Oracle数据到Hive,代码清晰一目了然
包含hive和oracle的常用函数对比关系表,可以用于查询hive函数转换成oracle函数,或者oracle函数转换hive函数之间的相互转换。
讲述如何采用最简单的kafka+flume的方式,实时的去读取oracle中的重做日志+归档日志的信息,从而达到日志文件数据实时写入到hdfs中,然后将hdfs中的数据结构化到hive中。
从Hive到SparkSQL的迁移之路。首先介绍一下有赞大数据平台总体架构:如下图所示,底层是数据导入部分,其中DataY区别于开源届的全量导入导出工具alibaba/DataX,是有赞内部研发的离线Mysql增量导入Hive的工具,把Hiv
hive、oracle常用函数对照表
hive和oracle常用函数对照,包含常用的函数分类 字符函数 数值函数 日期函数 聚合函数 转换函数 其他 增加的hive函数对比,只需要2个积分喔
Ambari下Hive3.0升级到Hive4.0,验证自测;
Hive的数据存储模式Hive的数据存储模式Hive的数据存储模式Hive的数据存储模式
1、问题描述 将“數倉數據提供與報表流程開發\码表导入\TY”中csv内容导入hive的码表当中。...2、将csv文件放到hive对应的服务器上 hadoop服务器:10.176.153.32 1、将sfc_b_phase.csv放在32的root目录下。
hive hive hive hive hive hive hive hive hive hive hive hive
oracle转hive.sql
5.安装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下 如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行) mysql -uroot -p #(执行下面的语句 *.*:所有库下的所有表 %:任何IP地址...
hive数据存储模式,对理解hive有帮助
(3)sqoop数据迁移,完成HIve与MySQL数据库中的数据交互 (4)Echarts搭建动态可视化大屏 (5)SpringBoot搭建可视化后台系统,完成前端与后台的数据传递与交互。 (6)基于Cenots7 搭建虚拟机,配置Hadoop、HDFS、...
基于oracle或者mysql生成自动建表同步源数据表结构及注释