sqoop1.4.6 安装配置
下载地址:
http://sqoop.apache.org
(1)、编辑/home/lin/hadoop/sqoop-1.4.6/conf/sqoop-env.sh
若是不适用hbase和hive的话就不用配置,需要使用zookeeper的话自己配置zookeeper的home(我这里暂时没有使用就不用配置)
export HADOOP_COMMON_HOME=/home/lin/hadoop/hadoop-2.6.1
export HADOOP_MAPRED_HOME=/home/lin/hadoop/hadoop-2.6.1
export HBASE_HOME=/home/lin/hadoop/hbase-1.1.2
export HIVE_HOME=/home/lin/hadoop/apache-hive-1.2.1-bin
(2)、编辑/home/lin/hadoop/sqoop-1.4.6/bin/configure-sqoop
根据需要注释掉自己不用的东西:
我根据自己的需要注释掉了 HCAT_HOME 、ACCUMULO_HOME、ZOOKEEPER_HOME
(3)、测试
使用 sqoop version 查看
证明配置成功~
(4)、数据导入测试
若是需要连接oracle需要导入oracle 的驱动jar
http://download.csdn.net/detail/linlinv3/9048953
若是需要连接mysql需要导入mysql的驱动jar
下面简单测试几个,其余的可以看官方doc,很详细;
#database named hive on the host 192.168.0.166 若是不写--target-dir 则默认是hdfs上的user/username/tablename 路径
导入数据到hdfs上
mysql :
sqoop import --connect jdbc:mysql://192.168.0.166/hive --username hive --table testlin --target-dir /user/sqoop
oracle : oracle 的表名需要大写,要不会报错,说找不到;
sqoop import --connect jdbc:oracle:thin:@192.168.0.105:1521:ORCL --username hbea --password fulong --table ACTION_LOG
带where条件的导入: and $CONDITIONS 是必须要这么写的 --split-by 也是必须要写的sqoop import --connect jdbc:oracle:thin:@192.168.0.105:1521:ORCL --username hbea --password fulong --query 'select ACTION_TIME,SESSION_ID FROM ACTION_LOG WHERE USER_ID IS NOT NULL and $CONDITIONS' --target-dir /user/sqoop/query1 --split-by ACTION_TIME
hive: 官网 7.2.11 Table 8 讲了sqoop导入数据到 hive 的语法 -m参数控制Map tasks的数目,默认是4个sqoop import --connect jdbc:oracle:thin:@192.168.0.105:1521:ORCL --username hbea --password fulong --table ACTION_LOG --columns "ACTION_TIME,USER_ID" -m 1 --hive-import --hive-database HIVE --hive-table HIVE_LOG --hive-drop-import-delims --fields-terminated-by "\t" --lines-terminated-by "\n"
如果你的表中关键字不是根据其范围均匀的分布,就可能导致不平衡的任务。这个时候你需要明确的选择一个不同的列使用--split-by指定分隔参数。目前,Sqoop,还不支持对各个列索引进行分隔,如果一个表没有索引列或者含有多个关键字列,你必须手动的指定一个分隔列。
注意二:
如果SQL语句中使用双引号(“”),则必须使用\$CONDITIONS代替$CONDITIONS,使你的shell不将其识别为shell自身的变量。
注意三:
目前版本的Sqoop中,使用自由形式查询导入,只提供简单的查询,没有复杂的和“OR”条件查询在where子句中。
ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could not load db driver class: oracle.jdbc.OracleDriver是因为缺少驱动包,下载所需驱动包:http://download.csdn.net/detail/linlinv3/9048953 解决问题