hive学习笔记之-使用Sqoop把Oracle表导入Hive
来源:互联网 发布:matlab求矩阵归一化 编辑:程序博客网 时间:2024/05/18 01:45
安装环境:
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: http://apache.dataguru.cn/hive/
Hadoop: http://apache.dataguru.cn/hadoop/
Sqoop: http://apache.dataguru.cn/sqoop/
Ojdbc: http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html
操作步骤:
前提确保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会使用主键来平均地分割数据。并发导入的时候可以设置相关的分割列等等,具体的做法参考官方的文档。
官方文档:
http://sqoop.apache.org/docs/1.4.4/index.html
参数说明参考:
http://blog.csdn.net/lichangzai/article/details/19205957
注意:
l 用户名和表名必需是大写的,除非它们在创建的时候是名字是放在引号中的大小写混合的形式。
l Sqoop会把Oracle中的表自动在hive中中创建,不用手工创建
l 表自动创建在default数据库中,如果想导入到其它库中,可加--hive-table mydb.tbname方式导入。
--导入实例
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
参考文章:
http://blog.csdn.net/lichangzai/article/details/8542613
http://blog.sina.com.cn/s/blog_3fe961ae01019a4l.html
http://sqoop.apache.org/docs/1.4.4/index.html
http://blog.csdn.net/lichangzai/article/details/19205957
- hive学习笔记之-使用Sqoop把Oracle表导入Hive
- 使用Sqoop把Oracle表导入Hive
- 使用Sqoop把Oracle表导入Hive
- Sqoop从Oracle导入表到Hive
- sqoop把hive表数据导入到mysql中
- sqoop把hive数据导入到DB2
- Sqoop工具使用(一)--从oracle导入数据到hive
- sqoop hive mysql oracle 数据导入
- sqoop导入oracle数据至hive
- 用sqoop将oracle数据导入Hive
- Sqoop 连接Oracle导入数据到hive
- Sqoop导入hive注意事项
- Sqoop增量导入Hive
- Sqoop导入hive注意事项
- 使用Sqoop将Hive表数据导入到mysql
- 使用sqoop --options-file 导入hive数据
- 使用sqoop --options-file 导入hive数据
- 使用sqoop从pg导入hive
- GPU术语
- PDU发送短信 事例
- 电脑的基本操作
- SVM分类器-libsvm(三)
- 安卓软件开发笔记
- hive学习笔记之-使用Sqoop把Oracle表导入Hive
- UIView简单动画
- C# MD5加密
- 无穷递降证明唯一解
- YV12 和NV12
- 移动计算的大牛们--更新中
- Web.xml配置详解
- 苹果在2007年推出了最初的苹果电视机顶盒产品
- 深入浅出游戏算法(3)-lua脚本(5)