- Sqoop官网
Sqoop是一种用于在Hadoop和结构化数据存储(如关系数据库)之间高效传输批量数据的工具。
sqoop-env-template.sh
并重命名为sqoop-env.sh
。配置HADOOP_COMMON_HOME
, HADOOP_MAPRED_HOME
, HBASE_HOME
, HIVE_HOME
,其中Hadoop是必须配置的,其余的有需要时可以再配。bin/sqoop list-databases \
--connect jdbc:mysql://localhost:3306 \
--username root \
--password root
bin/sqoop import <参数>
--connect
: 指定JDBC连接URI--connection-manager
: 自定连接manager--connection-param-file
: 数据库连接参数配置文件--driver
: 驱动名--hadoop-home
: Hadoop安装目录--hadoop-mapred-home
: MR安装目录--password
: 数据库密码--username
: 数据库用户名--verbose
: 打印更多的信息--append
: 追加模式,不删除原数据--columns
: 导入数据库的列名--delete-target-dir
: 删除指定的导入存放目录--direct
: Use direct import fast path--direct-split-size
: 在direct模式下,每n个字节分为一个切片-e,--query
: 导入SQL语句的查询结果--fetch-size
: 设置查询行数-m,--num-mappers
: 设置mapper任务数量--mapreduce-job-name
: 设置MR任务名称--table
: 指定表名--target-dir
: 指定导入HDFS路径--warehouse-dir
: HDFS parent for table destination--where
: where设置查询条件--check-column
: 根据某列设置值进行增量导入--incremental
: 设置增量导入模式 ‘append’ 或 ‘lastmodified’--last-value
: check-column 从哪个值之后开始导入--enclosed-by
: Sets a required field enclosing character--escaped-by
: Sets the escape character--fields-terminated-by
: 字段分隔符--lines-terminated-by
: 行分隔符--mysql-delimiters
: Uses MySQL’s default delimiter set: fields: , lines: \n escaped-by: \ optionally-enclosed-by: ‘--optionally-enclosed-by
: Sets a field enclosing character--input-enclosed-by
: Sets a required field encloser--input-escaped-by
: Sets the input escape character--input-fields-terminated-by
: Sets the input field separator--input-lines-terminated-by
: Sets the input end-of-line char--input-optionally-enclosed-by
: Sets a field enclosing character--create-hive-table
: 创建hive表--hive-database
: 指定导入的hive数据库--hive-home
: 指定Hive的安装目录--hive-import
: 向Hive中导入数据--hive-overwrite
: 覆写Hive表中的内容--hive-partition-key
: 指定分区Key--hive-partition-value
: 指定分区value--hive-table
: 指定导入的Hive表--column-family
: Sets the target column family for the import--hbase-bulkload
: Enables HBase bulk loading--hbase-create-table
: If specified, create missing HBase tables--hbase-row-key
: Specifies which input column to use as the row key--hbase-table : Import to in HBase
3.2 从MySQL导入至HDFS
- 普通导入
###########################################
## 表结构: to_hdfs(id int, name varchar(20))
###########################################
bin/sqoop import \
--connect jdbc:mysql://hh1:3306/play \
--username hive \
--password 123456 \
--table to_hdfs
- 指定导入路径
bin/sqoop import \
--connect jdbc:mysql://hh1:3306/play \
--username hive \
--password 123456 \
--table to_hdfs \
--target-dir /sqoop/test1
- 指定Mapper任务数和字段分隔符
bin/sqoop import \
-connect jdbc:mysql://hh1:3306/play \
-username hive \
-password 123456 \
--direct \
--table to_hdfs \
--delete-target-dir \
--target-dir /sqoop/test1 \
--num-mappers 1 \
--fields-terminated-by '\t'
- 数据增量导入
bin/sqoop import \
-connect jdbc:mysql://hh1:3306/play \
-username hive \
-password 123456 \
--direct \
--table to_hdfs \
--target-dir /sqoop/test1 \
--num-mappers 1 \
--fields-terminated-by '\t' \
--check-column id \
--incremental append \
--last-value 7
3.3 从MySQL导入至Hive
bin/sqoop import \
-connect jdbc:mysql://hh1:3306/play \
-username hive \
-password 123456 \
--table to_hdfs \
--fields-terminated-by '\t' \
--lines-terminated-by '\n' \
--hive-import \
--hive-database sqoop \
--create-hive-table \
--hive-table test1 \
--num-mappers 1
4. 数据导出(export)
4.1 指令参数解析
bin/sqoop export <参数>
- Common arguments: 同import参数
- Export control arguments:
--batch
: 表示以批处理模式执行的底层语句
--columns
: 导出的数据库字段
--direct
: Use direct export fast path
--export-dir
: 导出到指定的HDFS目录
-m,--num-mappers
: 设置mapper任务数量
--mapreduce-job-name
: 设置MR任务名称
--table
: 导出的表名称
--update-key
: Update records by specified key column
--update-mode
: Specifies how updates are performed when new rows are found with non-matching keys in database
--staging-table
: Intermediate staging table
--clear-staging-table
: Indicates that any data in staging table can be deleted
- Input parsing arguments:
--input-enclosed-by
: Sets a required field encloser
--input-escaped-by
: Sets the input escape character
--input-fields-terminated-by
: Sets the input field separator
--input-lines-terminated-by
: Sets the input end-of-line char
--input-optionally-enclosed-by
: Sets a field enclosing character
- Output line formatting arguments:
--enclosed-by
: Sets a required field enclosing character
--escaped-by
: Sets the escape character
--fields-terminated-by
: Sets the field separator character
--lines-terminated-by
: Sets the end-of-line character
--mysql-delimiters
: Uses MySQL’s default delimiter set: fields: , lines: \n escaped-by: \ optionally-enclosed-by: ‘
--optionally-enclosed-by
: Sets a field enclosing character
4.2 从HDFS导出至MySQL
- 全表数据导入
###########################################
## 表结构: to_mysql(id int, name varchar(20))
###########################################
bin/sqoop export \
-connect jdbc:mysql://hh1:3306/play \
-username hive \
-password 123456 \
--table to_inc \
--columns id,name \
--export-dir /sqoop/test1 \
--fields-terminated-by '\t' \
--lines-terminated-by '\n' \
--num-mappers 1
- 指定列导入
###################################################################
## 表结构: to_inc(no int auto_increatment, id int, name varchar(20))
###################################################################
bin/sqoop export \
-connect jdbc:mysql://hh1:3306/play \
-username hive \
-password 123456 \
--table to_inc \
--columns id,name \
--export-dir /sqoop/test1 \
--fields-terminated-by '\t' \
--lines-terminated-by '\n' \
--num-mappers 1
5. Job
5.1 创建Job
- 指令:
bin/sqoop job --create
- 示例:创建一个数据增量导入job
bin/sqoop job \
--create import_data1 \
-- \
import \
--onnect jdbc:mysql://hh1:3306/play \
--username hive \
--password 123456 \
--direct \
--table to_hdfs \
--target-dir /sqoop/test1 \
--num-mappers 1 \
--fields-terminated-by '\t' \
--check-column id \
--incremental append \
--last-value 7
5.2 查看所有Job
bin/sqoop job --list
5.3 查看一个Job详情
bin/sqoop job --show
5.4 执行Job
bin/sqoop job --exec
5.5 删除Job
bin/sqoop job --delete
你可能感兴趣的:(大数据)