接下来的问题:怎样导入数据到Hbase中?
Sqoop 是一个设计用于在 Apache Hadoop 和结构化数据存储(如关系数据库)之间高效地传输大批量数据的工具Cloudera Manager 支持的版本为 Sqoop 2。
二、把oracle外连接驱动拷贝到Sqoop安装路径中的lib文件夹下
2、切换到hdfs 用户:
导入的目录若已经存在则要先删除已经存在的目录否则会报路径以存在的错误提示:
当出现这个页面,表示导入成功
数据全量导入到hdfs後每隔一段时间oracle外连接又会出现新的数据,此时不可能再将所有数据重新导一遍我们就需要增量数据导入这一模式了。
sqoop支持两种增量導入模式:
1、append即通过指定一个递增的列
比如订单表,每个订单有一个唯一标识自增列ID在关系型数据库中以主键形式存在。之前已经将id茬0~100之间的编号的订单导入到这里为HDFS现在一段时间后我们需要将近期产生的新的订单数据导入HDFS,以供后续数仓进行分析此时我们只需要指定–incremental 参数为append,–last-value参数为100即可表示只从id大于100后开始导入。
基于递增列的增量导入(将递增列值大于阈值的所有数据增量导入Hadoop) |
此方式要求原有表中有time字段它能指定一个时间戳,让Sqoop把该时间戳之后的数据导入至HDFS因为后续订单可能状态会变化,变化后time字段时间戳也会变化此时Sqoop依然会将相同状态更改后的订单导入HDFS,当然我们可以指定merge-key参数为pid表示将后续新的记录与原有记录合并。
基于时间列的增量导入(將时间列大于等于阈值的所有数据增量导入Hadoop) |
合并列(主键合并键值相同的记录) |
因为我的表中,pid为随机产生的32位数字所以选择使用lastmodified 。
若定时增量导入则需要创建一个job
增加定时任务(每35分钟执行一次)
每次执行sqoop job时,会提示输入密码如何避免呢?
export工具是将HDFS平台的数據,导出到外部的结构化存储系统中可能会为一些应用系统提供数据支持.
此方式要求导出的oracle外连接数据库中的表为空表或者新表,不然噺的数据产生再次导出的时候,会违反主键唯一的约束可以使用以下的命令:
sqoop使用手册参考:
网上已经有很多关于这方面的资料但是我在使用过程中也遇见了不少问题