# Sqoop安装与使用 ## 安装 1. 下载地址:http://mirrors.hust.edu.cn/apache/sqoop/1.4.6/ 2. 上传服务器,解压到指定目录(过程略) 3. 修改配置文件/opt/module/sqoop-1.4.6/conf 目录下 sqoop-env.sh ```sh # 各个目录根据环境自行修改 export HADOOP_COMMON_HOME=/opt/module/hadoop-2.7.2 export HADOOP_MAPRED_HOME=/opt/module/hadoop-2.7.2 export HIVE_HOME=/opt/module/hive export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.10 export ZOOCFGDIR=/opt/module/zookeeper-3.4.10/conf export HBASE_HOME=/opt/module/hbase ``` 4. 拷贝 JDBC 驱动 ```shell cp mysql-connector-java-5.1.27-bin.jar $SQOOP_HOME/lib/ ``` 5. 验证测试 1. command 验证 ```shell bin/sqoop help ``` 2. 测试是否可以连接数据库 ```shell # 列出连接数据库的所有数据库名 bin/sqoop list-databases --connect jdbc:mysql://localhost2:3306/ --username root --password 000000 ``` ## 简介 ### 参数说明 ```shell # 数据库url --connect jdbc:mysql://hadoop102:3306/company \ # 数据库用户名 --username root \ # 数据库密码 --password 000000 \ # 指定表名(注:从方式导入数据才会自动指定路径) --table staff \ # 指定要导入的列 --columns id,name # 指定要导入的列,where条件需要加 '' --where 'id >= 10' # 自定义 SQL, where 后面的 $CONDITIONS 是必须的 # 与--split-by id 一起使用 # 需要指定 --target-dir 的路径,此方式导入数据不会自动创建 --query 'select id, name from tableName where $CONDITIONS ' # 根据指定的列分区,该列为数字 --split-by id # 指定保存目录,不指定则默认使用数据库 --target-dir /user/company \ # 删除路径,不建议使用,不安全 --delete-target-dir \ # map的个数 --num-mappers 1 \ # 在hdfs存储格式,指定分隔符 --fields-terminated-by "\t" ``` ### 案例 1. sqoop to hive ```shell bin/sqoop import \ --connect jdbc:mysql://host:3306/company \ --username root \ --password 000000 \ --table tableName \ --num-mappers 1 \ # hive 导入 --hive-import \ --fields-terminated-by "\t" \ # 覆写 --hive-overwrite \ # 指定 hive 表 --hive-table staff_hive ``` 2. sqoop to hbase sqoop1.4.6只支持HBase1.0.1之前的版本的自动创建HBase表的功能 ```shell bin/sqoop import \ --connect jdbc:mysql://hadoop102:3306/company \ --username root \ --password 000000 \ --table company \ --columns "id,name,sex" \ # 只能往一个列族导数据 --column-family "info" \ # hbase 自动创建表 --hbase-create-table \ --hbase-row-key "id" \ --hbase-table "hbase_company" \ --num-mappers 1 \ --split-by id ``` 3. sqoop to mysql Mysql中如果表不存在,不会自动创建 ```shell bin/sqoop export \ --connect jdbc:mysql://hadoop102:3306/company \ --username root \ --password 000000 \ --table staff \ --num-mappers 1 \ --export-dir /user/hive/warehouse/staff_hive \ --input-fields-terminated-by "\t" ```