1.修改配置 /home/sqoop-1.4.4/conf/sqoop-env.sh
export HADOOP_COMMON_HOME=/home/hadoop-2.3.0 export HADOOP_MAPRED_HOME=/home/hadoop-2.3.0 #export HBASE_HOME=/usr/local/hbase export HIVE_HOME=/home/hive-0.10.0 #export ZOOCFGDIR=/usr/local/zookeeper
2.加入配置 /etc/profile
export JAVA_HOME=/lib/jdk1.6.0_30 export HADOOP_HOME=/home/hadoop-2.3.0 export HIVE_HOME=/home/hive-0.10.0 export ANT_HOME=/lib/apache-ant-1.9.0 export SQOOP_HOME=/home/sqoop-1.4.4 export HADOOP_MAPRED_HOME=${HADOOP_HOME} export HADOOP_COMMON_HOME=${HADOOP_HOME} export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$HADOOP_HOME/bin:$SQOOP_HOME/bin:$HIVE_HOME/bin:$PATH
3.测试下 sqoop version
[root@localhost ~]# sqoop version Sqoop 1.4.4 git commit id 050a2015514533bc25f3134a33401470ee9353ad Compiled by vasanthkumar on Mon Jul 22 20:06:06 IST 2013
4.测试导入HDFS
先写一个文件 /home/mysql.txt
import --connect jdbc:mysql://prchaz02823:3306/adventureworksdw2008r2 --username root --password root --table DimDate2 --null-string '\\N' --null-non-string '\\N' #--map-column-java #FullDateAlternateKey=DATE --split-by DateKey --target-dir /home/dimdate_txt --hive-import --hive-table adventureworksdw.dimdate2 --map-column-hive FullDateAlternateKey=timestamp --hive-overwrite #--direct
一个命令必须2行 一行是参数 一行是值 ,#是注释掉的 这个东西本质就是个属性文件.
我写的是直接导入hive ,hive虽然支持timestamp,但是如果不写map column hive 会默认把列变成了String,所以 overwrite了 column type mapping
--map-column-hive FullDateAlternateKey=timestamp
这个地方有点BUG. 最好是全部小写,因为 FullDateAlternateKey 是有大小写的,指向的是Source column(mysql的列) 不是hive的column name. 如果写成了hive的column 会报 找不到列的错误.
别的参数具体什么意思,去查看doc 就知道了http://sqoop.apache.org/docs/1.4.4/SqoopUserGuide.html
5.运行就开始跑了
sqoop --options-file /home/mysql.txt
备注下, 我这里是全表导入的,而去表是有主键的,默认是用主键做为split-by ,如果没有主键的表这么写是报错的,需要指定 --split-by