hive取mysql数据oracle数据_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

软件下载:

操作步骤:

前提确保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

d73df0e1af7ee465da8aa86b00d6a88b.png

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 的下载地址:请点这里

相关阅读:

Hadoop生态系统搭建(hadoop hive hbase zookeeper oozie Sqoop) http://www.linuxidc.com/Linux/2012-03/55721.htm

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值