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