Home  >  Article  >  Database  >  Hive学习笔记之-使用Sqoop把Oracle表导入Hive

Hive学习笔记之-使用Sqoop把Oracle表导入Hive

WBOY
WBOYOriginal
2016-06-07 17:35:22921browse

Hive学习笔记之-使用Sqoop把Oracle表导入Hive

安装环境:

Hive: hive-0.11.0

Hadoop: Hadoop 1.2.1

Sqoop: sqoop-1.4.4.bin__hadoop-1.0.0

Oralce driver: ojdbc6.jar

 

软件下载:

Hive:

Hadoop:

Sqoop:

Ojdbc:

 

操作步骤:

前提确保hadoop已经启动

1. 安装sqoop

--解压

tar zvxf sqoop-1.4.4.bin__hadoop-1.0.0.tar.gz

cp -r sqoop-1.4.4.bin__hadoop-1.0.0/app/hadoop

chown -Rlicz:hadoop /app/hadoop/sqoop-1.4.4.bin__hadoop-1.0.0

 

2. 复制Oracle JDBC的驱动放到Sqoop的lib文件夹下

cp ojdbc6.jar/app/hadoop/sqoop-1.4.4.bin__hadoop-1.0.0/lib

 

3. 修改环境变量

[licz@nticket1~]$ vi .bash_profile

export HADOOP_HOME=/app/hadoop/hadoop-1.2.1

export JAVA_HOME=/usr/java/jdk1.6.0_18

export HIVE_HOME=/app/hadoop/hive-0.11.0

export SQOOP_HOME=/app/hadoop/sqoop-1.4.4.bin__hadoop-1.0.0

PATH=$JAVA_HOME/bin:$PATH:$HOME/bin:$HADOOP_HOME/bin:$PIG_HOME/bin:$HIVE_HOME/bin:$SQOOP_HOME/bin

export PATH

 

4. 导入oracle数据

 

--导入方法

$ sqoop import--hive-import --connect jdbc:oracle:thin:@192.168.56.111:1521:DBNAME --username USERNAME --password PASSWORD --verbose -m 1 --table TABLENAME

 

说明:

DBNAME:数据库实例名

USERNAME:用户名

PASSWORD:密码

TABLENAME:表名

-m:导入数据的进程的并发数,默认是4。如果导入的数据不大的话,不妨设置成1,这样导入更快。一般来说Sqoop会使用主键来平均地分割数据。并发导入的时候可以设置相关的分割列等等,具体的做法参考官方的文档。

官方文档:

参数说明参考:

 

注意:

l 用户名和表名必需是大写的,除非它们在创建的时候是名字是放在引号中的大小写混合的形式。

l Sqoop会把Oracle中的表自动在hive中创建,不用手工创建

 

--导入实例

sqoop import--hive-import --connect jdbc:oracle:thin:@172.16.80.115:1521:CUSTOMER2--username WEBMEMBER --password webmem123 --verbose -m 1 --table MEMBERS

 

 

5. 增量导入

另外一个问题,,如果我们要导入某个表中的新加入的部分,可以使用--check-column、--incremental、--last-value三个参数,--check-column指定要检查的列,--incremental指定某种增加的模式,只有两个合法的值,append 和lastmodified。如果--incremental为append,则Sqoop会导入--check-column指定的列的值大于--last-value所指定的值的记录。如果--incremental为lastmodified,则Sqoop会导入--check-column指定的列的值(这是一个时间戳)近于--last-value所指定的时间戳的记录。

 

例如下面的命令可以导入列ID的值大于4的所有记录。

 

$ sqoop import--hive-import --connect jdbc:oracle:thin:@192.168.56.111:1521:DBNAME --usernameUSERNAME --password PASSWORD --verbose -m 1 --table TABLENAME --check-column ID--incremental append --last-value 4

 

遇到的问题:

1.导入hive时报错

ERROR tool.ImportTool:Imported Failed: Attempted to generate class with no columns

 

原因和解决办法:

是因导入时表名或用户名没有大写所致

sqoop import --hive-import --connectjdbc:oracle:thin:@172.16.80.115:1521:CUSTOMER2 --username WEBMEMBER --passwordwebmem123 --verbose -m 1 --tablemembers

Sqoop 的详细介绍:请点这里
Sqoop 的下载地址:请点这里

相关阅读:

通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据

[Hadoop] Sqoop安装过程详解

用Sqoop进行MySQL和HDFS系统间的数据互导

Hadoop Oozie学习笔记 Oozie不支持Sqoop问题解决

Hadoop生态系统搭建(hadoop hive hbase zookeeper oozie Sqoop)

Hadoop学习全程记录——使用Sqoop将MySQL中数据导入到Hive中

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn