Sqoop-1.4.6安装
下载
wget https://mirrors.tuna.tsinghua.edu.cn/apache/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
解压
tar -zxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
改名
mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gzsqoop-1.4.6
移动
mv sqoop-1.4.6 /usr/local/
添加mysql jar
mv mysql-connector-java-5.1.8.jar/usr/local/sqoop-1.4.6/lib
修改
vim /etc/profile
export HADOOP_HOME=/usr/local/hadoop
export SQOOP_HOME=/usr/local/sqoop-1.4.6
exportPATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SQOOP_HOME/bin
改名
cp sqoop-env-template.sh sqoop-env.sh
修改
vim sqoop-env.sh
export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop
修改
vim configure-sqoop
Mysql授权外部IP访问
mysql -h localhost -u root -p
use mysql;
select host from user where user=’root’;
update user set host=’%’ where user=’root’;
flush privileges;
命令
列出数据库中所有库
sqoop list-databases -connectjdbc:mysql://192.168.199.1:3306/ -username root –password 123456
列出数据库中所有表
sqoop list-tables -connectjdbc:mysql://192.168.199.1:3306/hadoop -username root –password 123456
将数据库中数据导入Hdfs
sqoop import -connectjdbc:mysql://192.168.199.1:3306/hadoop -username=root -table hello -m 1-target-dir /hello
sqoop import -connectjdbc:oracle:thin:@192.168.199.1:1521:ORCL -username root -table HELLO -m 1-target-dir /hello
sqoop import -connectjdbc:oracle:thin:@192.168.199.1:1521:ORCL -username root -query ‘select ID,NAMEfrom HELLO where ID IS NOT NULL and $CONDITION’ -target-dir /hello -split-by ID
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"
将数据库中数据增量导入Hdfs
sqoop import -connect jdbc:mysql://192.168.199.1:3306/hadoop-username=root -table hello -m 1 -target-dir /hello -check-column id-incremental append -last-value 4
将数据库中表结构复制到Hive
sqoop create-hive-table -connectjdbc:mysql://192.168.199.1:3306/hadoop -table hello -username root -hive-tablehello
将数据库中数据导入Hive
sqoop import -connect jdbc:mysql://192.168.199.1:3306/hadoop-username root -table hello -hive-import -hive-table hello -m 1
将Hdfs中数据导入数据库
sqoop export-connectjdbc:mysql://192.168.199.1:3306/hadoop -table hello -username root-export-dir hdfs://cancer/hello/part-m-00000
将数据库中数据增量导入HBase
sqoop import--connectjdbc:mysql://172.16.247.140:3306/sqoop --table tb1--hbase-create-table--hbase-table tb3 --column-family table_schema--hbase-row-key table_name--username hive --password 123456 -m 1
说明:要最新版mysql-connector-java-5.1.32.tar.gz,否则报错Bug。oracle表名要大写,要不会报错,说找不到。
注意一:如果你的表中关键字不是根据其范围均匀的分布,就可能导致不平衡的任务。这个时候你需要明确的选择一个不同的列使用--split-by指定分隔参数。目前,Sqoop,还不支持对各个列索引进行分隔,如果一个表没有索引列或者含有多个关键字列,你必须手动的指定一个分隔列。
注意二:如果SQL语句中使用双引号(“”),则必须使用\$CONDITIONS代替$CONDITIONS,使你的shell不将其识别为shell自身的变量。
注意三:目前版本的Sqoop中,使用自由形式查询导入,只提供简单的查询,没有复杂的和“OR”条件查询在where子句中。