Sqoop工具
1.列出指定数据库中有哪些数据库
- sqoop-list-databases
- sqoop list-databases
2.列出数据库中所有的表
命令:
- sqoop list-tables
- sqoop-list-tables
# sqoop list-tables --connect jdbc:mysql://hostname:3306/database-name?useSSL=false --username root --password 123456
会查出所写数据库中所有的表
3.Sqoop导入
导入工具用法
基本语法
sqoop import <一般参数> <导入参数>
sqoop-import <一般参数> <导入参数>
常用工具参数
参数 | 描述 |
---|---|
–connect | 指定JDBC链接 |
–connection-manager | 指定要使用的连接管理器类 |
–hadoop-mapred-home
| 覆写$HADOOP_MAPRED_HOME |
–driver | 手动置顶要使用的JDBC驱动程序类 |
–help | 打印使用说明 |
–password-file | 设置包含验证密码的文件的路径 |
-P | 从控制台读取密码 |
-password | 设置认证密码 |
–username | 设置身份验证用户名 |
–verbose | 在工作时打印更多信息 |
–connection-param-file | 提供连接参数的可选属性文件 |
–relaxed-isolation | 将连接事务隔离级别设置为读取未提交 |
3.1导入hive
sqoop import \
--connect jdbc:mysql://hostname:3306/databasename?useSSL=false \
--username root \
--password 123456 \
--table t_user \ ##mysql表名
--hive-import \
--m 1 \
--hive-table niit.t_users ##hive数据库名和表名
3.2 根据自定义查询语句进行导入
使用自定义查询导入必须使用–target-dir来指定目标目录,且不能和–table 一起使用
3.2.1 where条件过滤
sqoop import
--connect jdbc:mysql://hostname:3306/databasename?useSSL=false \
--username root \
--password 123456 \
--where "id>4" \
--target-dir /wherequery \
--table good --m 1
查询结果如下:
查询结果正确,都为id大于4的数据
3.2.2 query查询
注意:
- 使用query sql语句来进行查找不能加参数–table
- 必须要添加where条件
- where条件后面必须带一个$CONDITIONS字符串
- 并且这个sql必须用单引号,不能用双引号
sqoop import \
--connect jdbc:mysql://lingyun2:3306/niit?useSSL=false \
--username root \
--password 123456 \
--target-dir /wherequery2 \
--query 'select id,name from good WHERE id<5 and $CONDITIONS' \
--split-by id \
--fields-terminated-by '\t' \
--m 2
–split-by id 通常配合-m 10参数使用。用于指定根据哪个字段进行划分并启动多少个maptask。
导入hbase
3.3 导入hbase
sqoop import \
--connect jdbc:mysql://lingyun2:3306/niit?useSSL=false \
--username root \
--password 123456 \
--table t_user \
--hbase-table tt_user \
--column-family cf \
--hbase-create-table \
--hbase-row-key id \
--hbase-bulkload
未完待续…