文章来源: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”指的是将传统的Oracle数据库中的数据迁移到分布式计算框架Hadoop中。这个过程通常涉及到大量的数据处理和转换,以适应Hadoop的存储和处理方式。Hadoop主要由HDFS...
Oracle 是一个广泛使用的数据库管理系统,PL-SQL 是其内嵌的结构化查询语言,用于编写存储过程和函数。Hadoop 是一个开源分布式计算框架,而 Hive 是在 Hadoop 上构建的数据仓库工具,用于SQL-like 查询。Phoenix 是...
Oracle PL-SQL 与 Hadoop Hive 和 Phoenix 是两种不同的数据处理和存储系统,它们各自拥有独特的函数库,但在数据操作中存在一些相似的功能。本文将详细介绍 Oracle PL-SQL 中的一些常见函数,以及它们在 Hadoop ...
对于 Oracle DBA 而言,Hive 的 SQL 接口使得他们能够快速迁移并适应 Hadoop 平台。 示例: ``` sql> describe sh.products; +-----------------------+----------------+---------+ | name | type | comment | +--...
这个项目旨在帮助用户理解并实施MySQL到Hive的数据迁移过程。 【知识点详解】: 1. **DataX框架**: DataX是一个企业级的全链路数据集成框架,提供了离线数据同步和实时数据同步的能力。它的设计目标是实现不同...
在大数据处理领域,Hive...总结,Hive.ziphive数据迁移和数据分析涉及多个环节,从数据的导入、存储压缩到查询分析和结果导出,每个步骤都需精心设计和优化。理解并掌握这些知识点,对于大数据处理和分析工作至关重要。
这可能包括如何使用HiveQL(Hive的SQL方言)编写查询,如何配置Hive以适应不同的存储和计算需求,或者在进行数据迁移时需要注意的关键点。 压缩包内的文件“mynote.zip”可能包含了作者关于这个主题的详细笔记,...
Aquila是一款专业的数据库迁移工具,主要用于帮助用户将数据从Oracle、MySQL、SQL Server等传统关系型数据库迁移到PostgreSQL,并且支持从PostgreSQL向大数据平台如Hive、Hbase、Impala等进行双向迁移。这款工具是用...
最初的设计方案是通过 Sqoop 将数据从 PostgreSQL 导入到 Kafka,再通过存储程序将 Kafka 的数据保存至 Hive 或 HBase 中。然而,在实施过程中遇到了 Sqoop 版本兼容性问题: - **Sqoop1**:适用于命令行模式执行。...
它简化了在Hadoop上进行数据仓库操作的复杂度,支持ETL工具,使得数据仓库应用程序能轻松迁移到Hadoop平台。 #### 14.1.4 Hive与Hadoop生态系统的关联 Hive是Hadoop生态系统的一部分,依赖HDFS存储数据,依赖...
它支持多种数据库系统,如MySQL、Oracle等,使得用户可以轻松地将企业级数据库的数据整合到Hadoop生态中进行分析,或者将分析结果回写到数据库供业务系统使用。 将Hadoop、Hive和Sqoop结合起来,可以形成一个强大的...
将这些驱动包放入Hive或Sqoop的lib目录下, Sqoop在执行数据迁移任务时会自动检测并加载这些驱动,从而能够正确地连接到Oracle数据库并执行SQL语句。在实际操作中,你需要确保所选的驱动版本与你的Java环境和Oracle...
总的来说,Hive和Sqoop是大数据生态系统中的关键组件,它们提供了从传统数据库到Hadoop平台的数据管理和迁移能力,帮助企业充分利用大数据的潜力。理解和掌握这两个工具的使用,对于大数据工程师和数据分析师来说至...
2. Hive:Hive是建立在Hadoop之上的数据仓库工具,它允许用户使用SQL(HQL,Hive Query Language)语言对存储在Hadoop上的结构化和半结构化数据进行查询、分析和处理。Hive将SQL语句转换为MapReduce任务执行,简化了...
尽管如此,Hive 也尝试支持部分 Oracle SQL 语法,以便于迁移和使用。 ### 开发规范 对于需要扩展的函数和语法,Hive 提供了开发规范,指导开发者如何创建自定义函数和语法转换。 #### 扩展函数开发规范 开发...
这是一种用于直接访问Hadoop分布式文件系统(HDFS)的工具,使得Oracle数据库可以直接读取存储在HDFS上的数据。这种连接器可以显著提高数据访问速度,并减少数据迁移的成本。 ##### 3. Oracle Data Integrator Hadoop...
它可以处理大规模数据集,支持多种数据库类型,如MySQL、Oracle、SQL Server等,并且可以与Hive、Pig等Hadoop生态系统中的其他工具无缝集成。 总结来说,从RDBMS迁移到Hadoop是为了应对大数据带来的存储和计算挑战...
对于存储在关系型数据库(如MySQL、Oracle)中的Java EE应用数据,一般不直接迁移到HDFS,而是选择像Hbase或Cassandra这样的分布式数据库。例如,可以通过JDBC读取关系型数据库中的数据,然后使用Hbase的API写入到...
在数据处理领域中,将Hadoop与Oracle数据库连接起来意味着可以将Hadoop集群存储的大量数据,通过一定的技术手段,实现数据的迁移、同步或分析。这样的操作可以让我们利用Hadoop的存储优势以及Oracle数据库的查询与...