用sqoop将oracle数据导入Hbase 使用笔记
来源:互联网 发布:开淘宝零食店流程 编辑:程序博客网 时间:2024/06/05 15:27
网上已经有很多关于这方面的资料,但是我在使用过程中也遇见了不少问题
1. sqoop 的环境我没有自己搭建 直接用的公司的
2. oracle 小白怕把公司环境弄坏了,自己用容器搭建了一个
docker pull docker.io/wnameless/oracle-xe-11g
docker run -d -p 2022:22 -p 1521:1521 -p 8080:8080 --name oracle wnameless/oracle-xe-11g
创建表,用户,插入数据,oracle数据库就算准备好了
SQL> select * from student; ID NAME AGE---------- -------------------- ---------- 1 zy01 10 2 zy02 10 3 zy03 10
3. 测试连通性
# sqoop list-tables --connect jdbc:oracle:thin:@122.18.10.114:1521:xe --username test --password test111
ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could not load db driver class: oracle.jdbc.OracleDriver
解决办法 需要有ojdbc6.jar,放在$SQOOP_HOME/lib里
ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.NullPointerException
这个错误主要就是没有连接成功,检查一下,用户名,密码,防火墙什么的,笔者是因为网络根本就不通。。。。
到这里就能成功返回 所以的表
4. 然后开始数据迁移
简介及部分重要参数介绍
Sqoop除了能够将数据从关系型数据库导入到HDFS和Hive中,还能够导入到HBase表中。
--hbase-table:通过指定--hbase-table参数值,指明将数据导入到HBase表中,而不是HDFS上的一个目录。输入表中的每一行将会被转换成一个HBase Put操作的输出表的一行。--hbase-row-key:你可以使用--hbase-row-key参数,手动的指定row key。默认的情况下,Sqoop会将split-by 列作为HBase rowkey列。如果没有指定split-by值,它将会试图识别关系表的关键字。
如果源表是组合关键字,--hbase-row-key 参数后面值是用逗号分隔的组合关键字属性的列表,在这样种情况下,通过合并组合关键字属性的值来产生HBase的Row key,每个值之间使用下划线分隔开来。
--column-family:必须指定--column-family参数,每一个输出列都会被放到同一个family列族中。 --hbase-create-table:如果HBase中的目标表和列族不存在,如果你使用该参数,Sqoop在运行任务的时候会根据HBase的默认配置,首先创建目标表和列族。
注意一:当源表中是组合关键字的时候,必须手动指定--hbase-row-key参数,Sqoop才能将数据导入到HBase中,否则不行。注意二:如果HBase中的目标表和列族不存在,如果没加--hbase-create-table参数,Sqoop job将会报错误退出运行。所以你在将数据从源表导入到HBase之前,需要首先在HBase中创建目标表和其对应的列族。
# sqoop import --append --connect jdbc:oracle:thin:@122.18.10.114:1521:xe --username test --password test111 --m 1 --table STUDENT --columns ID,NAME,AGE --hbase-create-table --hbase-table student --hbase-row-key ID --column-family deptinfo报错 ERROR db.DBRecordReader: Top level exception:
java.sql.SQLSyntaxErrorException: ORA-00904: "age": invalid identifier
解决办法 把表名和字段名字用大写 (笔者开始用的小写)
成功以后进入 hbase查看
hbase(main):001:0> scan 'student'ROW COLUMN+CELL 1 column=deptinfo:AGE, timestamp=1495704288610, value=10 1 column=deptinfo:NAME, timestamp=1495704288610, value=zy01 2 column=deptinfo:AGE, timestamp=1495704288610, value=10 2 column=deptinfo:NAME, timestamp=1495704288610, value=zy02 3 column=deptinfo:AGE, timestamp=1495704288610, value=10 3 column=deptinfo:NAME, timestamp=1495704288610, value=zy03 3 row(s) in 0.3250 seconds
参考文档
http://www.aichengxu.com/oracle/9929535.htm
http://blog.csdn.net/liuxingjiaofu/article/details/6953701
http://www.cnblogs.com/byrhuangqiang/p/3922594.html
- 用sqoop将oracle数据导入Hbase 使用笔记
- 用sqoop将oracle数据导入Hbase
- HBase Shell 操作命令&&使用Sqoop将数据导入HBase
- 通过Sqoop工具将Oracle数据导入到HBase
- 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- 如何将Oracle数据库中的数据导入到hbase中 使用 Sqoop工具
- 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- 使用sqoop将MySQL数据库中的数据导入Hbase
- 使用sqoop将MySQL数据库中的数据导入Hbase (转)
- 使用sqoop将MySQL数据库中的数据导入Hbase
- 使用sqoop将MySQL数据库中的数据导入Hbase
- 使用sqoop将mysql的数据导入到HBase中
- 使用sqoop将MySQL数据库中的数据导入Hbase
- 用sqoop将oracle数据导入Hive
- sqoop将oracle导入到hbase经验之谈
- Sqoop将SQLServer数据导入HBase
- Sqoop_详细总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- Sqoop_详细总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- team链路聚合,网桥的配置,IPV6
- org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode
- Jquery详解1--定义差别基础1
- STL相关知识点
- windows窗口消息
- 用sqoop将oracle数据导入Hbase 使用笔记
- 基于UDP的服务器和客户端之间的通信
- 离散题目9
- centos6.5安装ELK
- C语言-数据结构-树
- Learning Spark——client mode和cluster mode的区别
- node.js 搭建简单服务
- 记录一特殊现象——C++继承关系下的this指针值
- bzoj 1017: [JSOI2008]魔兽地图DotR (树形DP+多重背包)