Sqoop概述:
- Sqoop是一个用于在Hadoop和关系数据库之间传输数据的工具
- 将数据从RDBMS导入到Hadoop
- HDFS、Hive、Hbase
- 从Hadoop导出数据到RDBMS
- 从导入或导出命令翻译成MapReduce程序来并行操作和容错 - 目标用户
- 系统管理员、数据库管理员
- 大数据分析师、大数据开发工程师等
案例一:从RDB导入到HDFS
导入到HDFS
sqoop import
--connect jdbc:mysql://clz:3306/retail_db
--driver com.mysql.jdbc.Driver
--table customers
--username root
--password root
--target-dir /sqoop/data
--m 3
通过where语句过滤导入表
sqoop import
--connect jdbc:mysql://clz:3306/retail_db
--table orders
--where "order_id<500"
--username root
--password root
--delete-target-dir
--target-dir /sqoop/data
--m 3
通过Columns过滤导入表
sqoop import
--connect jdbc:mysql://clz:3306/retail_db
--table user
--columns "order_id,order_date,order_customer_id"
--username root
--password root
--delete-target-dir
--target-dir /sqoop/data
--m 3
使用query方式导入数据
sqoop import
--connect jdbc:mysql://clz:3306/retail_db
--query "select * from orders wehre order_status!='closed' and \$CONDITIONS"
--username root
--password root
--split-by order_status
--delete-target-dir
--target-dir /sqoop/data
--m 3
使用Sqoop增量导入数据
sqoop import
--connect jdbc:mysql://localhost:3306/retail_db
--driver com.mysql.jdbc.Driver
--table orders
--username root
--password root
--incremental append
--check-column order_date
--last-value '2013-07-24'
--target-dir /sqoop/data
--m 3
导入文件格式(指定文件格式参数)
- as-textfile 导入数据为text文件(默认)
- as-avrodatafile 导入数据为avro文件
- as-sequencefile 导入数据为sequence文件
- as-parquetfile 导入数据为parquet文件
sqoop import
--connect jdbc:mysql://hadoop102:3306/hr
--table orders
--username root
--password root
--delete-target-dir
--target-dir /data/orders
--m 3
--as-sequencefile
案例二:从RDB导入到Hive
直接导入数据到Hive
create database if not exists retail_db;
sqoop import
--connect jdbc:mysql://clz:3306/retail_db
--driver com.mysql.jdbc.Driver
--table orders
--username root
--password root
--hive-import
--create-hive-table
--hive-database retail_db
--hive-table orders
--m 3
导入数据到Hive分区
sqoop import
--connect jdbc:mysql://clz:3306/retail_db
--driver com.mysql.jdbc.Driver
--query "select order_id,order_status from orders where order_date>='2013-11-03' and order_date<'2013-11-04' and \$CONDITIONS"
--username root
--password root
--delete-target-dir
--target-dir /sqoop/data
--split by order_id
--hive-import
--hive-database retail_db
--hive-table orders
--hive-partition-key "order_date"
--hive-partition-value "2013-11-03"
--m 3
从RDB导入到HBase
直接导入到HBase
create 'products','data','category'
sqoop import
--connect jdbc:mysql://localhost:3306/retail_db
--driver com.mysql.jdbc.Driver
--username root
--password root
--table products
--columns "product_id, product_name, product_description,product_price,product_image"
--hbase-table products
--column-family data
--m 3
导出HDFS数据到MySQL
create table customers_demo as select * from customers where 1=2;
hdfs dfs -mkdir /customerinput
hdfs dfs -put customers.csv /customerinput
sqoop import
--connect jdbc:mysql://clz:3306/retail_db
--username root
--password root
--table customers_demo
--export-dir /customerinput
--m 1
sqoop脚本
import
--connect
jdbc:mysql://localhost:3306/retail_db
--driver
com.mysql.jdbc.Driver
--table
customers
--username
root
--password
root
--target-dir
/sqoop/data
--delete-target-dir
--m
3
sqoop --options-file job_RDBMS2HDFS.opt