`

ORACLE存储过程如何迁移到HIVE?

阅读更多

文章来源: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

关联时主表数据为空,需要插入数据再进行测试。

 

分享到:
评论

相关推荐

    Hadoop数据迁移--从Oracle向Hadoop.zip

    标题中的“Hadoop数据迁移--从Oracle向Hadoop”指的是将传统的Oracle数据库中的数据迁移到分布式计算框架Hadoop中。这个过程通常涉及到大量的数据处理和转换,以适应Hadoop的存储和处理方式。Hadoop主要由HDFS...

    Oracle PL-SQL 对应 hadoop hive 、 p

    Oracle 是一个广泛使用的数据库管理系统,PL-SQL 是其内嵌的结构化查询语言,用于编写存储过程和函数。Hadoop 是一个开源分布式计算框架,而 Hive 是在 Hadoop 上构建的数据仓库工具,用于SQL-like 查询。Phoenix 是...

    Oracle PL-SQL 对应 hadoop hive 、 phoenix中常用的对应函

    Oracle PL-SQL 与 Hadoop Hive 和 Phoenix 是两种不同的数据处理和存储系统,它们各自拥有独特的函数库,但在数据操作中存在一些相似的功能。本文将详细介绍 Oracle PL-SQL 中的一些常见函数,以及它们在 Hadoop ...

    Hadoop databases: Hive, Impala, Spark, Presto For ORACLE DBAs

    对于 Oracle DBA 而言,Hive 的 SQL 接口使得他们能够快速迁移并适应 Hadoop 平台。 示例: ``` sql> describe sh.products; +-----------------------+----------------+---------+ | name | type | comment | +--...

    yinian_hive_increase:datax从mysql同步数据到hive

    这个项目旨在帮助用户理解并实施MySQL到Hive的数据迁移过程。 【知识点详解】: 1. **DataX框架**: DataX是一个企业级的全链路数据集成框架,提供了离线数据同步和实时数据同步的能力。它的设计目标是实现不同...

    hive.ziphive数据迁移和数据分析

    在大数据处理领域,Hive...总结,Hive.ziphive数据迁移和数据分析涉及多个环节,从数据的导入、存储压缩到查询分析和结果导出,每个步骤都需精心设计和优化。理解并掌握这些知识点,对于大数据处理和分析工作至关重要。

    Hive Pkg STGY TACT TEST UTLpkg

    这可能包括如何使用HiveQL(Hive的SQL方言)编写查询,如何配置Hive以适应不同的存储和计算需求,或者在进行数据迁移时需要注意的关键点。 压缩包内的文件“mynote.zip”可能包含了作者关于这个主题的详细笔记,...

    aquila:迁移工具,目标是Oracle,MySQL,SqlServer到PostgreSQL单项迁移,PostgreSQL和大数据平台Hive,Hbase,Impala等的双向迁移

    Aquila是一款专业的数据库迁移工具,主要用于帮助用户将数据从Oracle、MySQL、SQL Server等传统关系型数据库迁移到PostgreSQL,并且支持从PostgreSQL向大数据平台如Hive、Hbase、Impala等进行双向迁移。这款工具是用...

    Sqoop数据采集工具简介、安装、使用学习笔记(配合Hive和Hbase)

    最初的设计方案是通过 Sqoop 将数据从 PostgreSQL 导入到 Kafka,再通过存储程序将 Kafka 的数据保存至 Hive 或 HBase 中。然而,在实施过程中遇到了 Sqoop 版本兼容性问题: - **Sqoop1**:适用于命令行模式执行。...

    厦门大学林子雨版大数据基础入门培训课程 教师培训交流讲义-模块11-基于Hadoop的数据仓库Hive 共48页.ppt

    它简化了在Hadoop上进行数据仓库操作的复杂度,支持ETL工具,使得数据仓库应用程序能轻松迁移到Hadoop平台。 #### 14.1.4 Hive与Hadoop生态系统的关联 Hive是Hadoop生态系统的一部分,依赖HDFS存储数据,依赖...

    hadoop软件1,和hive_3,sqoop_2搭配使用

    它支持多种数据库系统,如MySQL、Oracle等,使得用户可以轻松地将企业级数据库的数据整合到Hadoop生态中进行分析,或者将分析结果回写到数据库供业务系统使用。 将Hadoop、Hive和Sqoop结合起来,可以形成一个强大的...

    sqoop连接Oracle11.2.0.2.0的驱动包

    将这些驱动包放入Hive或Sqoop的lib目录下, Sqoop在执行数据迁移任务时会自动检测并加载这些驱动,从而能够正确地连接到Oracle数据库并执行SQL语句。在实际操作中,你需要确保所选的驱动版本与你的Java环境和Oracle...

    HIVE&&SQOOP

    总的来说,Hive和Sqoop是大数据生态系统中的关键组件,它们提供了从传统数据库到Hadoop平台的数据管理和迁移能力,帮助企业充分利用大数据的潜力。理解和掌握这两个工具的使用,对于大数据工程师和数据分析师来说至...

    大数据环境包含hadoop+hive+sqoop数据迁移+azkaban任务调度

    2. Hive:Hive是建立在Hadoop之上的数据仓库工具,它允许用户使用SQL(HQL,Hive Query Language)语言对存储在Hadoop上的结构化和半结构化数据进行查询、分析和处理。Hive将SQL语句转换为MapReduce任务执行,简化了...

    Hive函数及语法说明.docx

    尽管如此,Hive 也尝试支持部分 Oracle SQL 语法,以便于迁移和使用。 ### 开发规范 对于需要扩展的函数和语法,Hive 提供了开发规范,指导开发者如何创建自定义函数和语法转换。 #### 扩展函数开发规范 开发...

    Hadoop与 Oracle 数据库集成.pdf

    这是一种用于直接访问Hadoop分布式文件系统(HDFS)的工具,使得Oracle数据库可以直接读取存储在HDFS上的数据。这种连接器可以显著提高数据访问速度,并减少数据迁移的成本。 ##### 3. Oracle Data Integrator Hadoop...

    RDBMS到Hadoop的迁移方案.pptx

    它可以处理大规模数据集,支持多种数据库类型,如MySQL、Oracle、SQL Server等,并且可以与Hive、Pig等Hadoop生态系统中的其他工具无缝集成。 总结来说,从RDBMS迁移到Hadoop是为了应对大数据带来的存储和计算挑战...

    Java EE企业级应用向Hadoop平台迁移的技术研究.pdf

    对于存储在关系型数据库(如MySQL、Oracle)中的Java EE应用数据,一般不直接迁移到HDFS,而是选择像Hbase或Cassandra这样的分布式数据库。例如,可以通过JDBC读取关系型数据库中的数据,然后使用Hbase的API写入到...

    big-data-connectors-olh-osch-1937064.pdf

    在数据处理领域中,将Hadoop与Oracle数据库连接起来意味着可以将Hadoop集群存储的大量数据,通过一定的技术手段,实现数据的迁移、同步或分析。这样的操作可以让我们利用Hadoop的存储优势以及Oracle数据库的查询与...

Global site tag (gtag.js) - Google Analytics