简介:Sqoop是一种用于在Hadoop和关系数据库或大型机之间传输数据的工具。您可以使用Sqoop将数据从关系型数据库管理系统(RDBMS)(如MySQL或Oracle或大型机)导入Hadoop分布式文件系统(HDFS),在Hadoop MapReduce中转换数据,然后将数据导出回RDBMS。
Sqoop自动化了这个过程的大部分,它依赖于数据库来描述要导入的数据的模式。Sqoop使用MapReduce来导入和导出数据,它提供了并行操作和容错功能。
版本:1.4.7(注:cdh集成版)
基本使用示例:
$ sqoop help
usage: sqoop COMMAND [ARGS]
Available commands:
codegen Generate code to interact with database records
create-hive-table Import a table definition into Hive
eval Evaluate a SQL statement and display the results
export Export an HDFS directory to a database table
help List available commands
import Import a table from a database to HDFS
import-all-tables Import tables from a database to HDFS
import-mainframe Import mainframe datasets to HDFS
list-databases List available databases on a server
list-tables List available tables in a database
version Display version information
See 'sqoop help COMMAND' for information on a specific command.
1.测试连接
sqoop list-databases --connect jdbc:mysql://hadoop1:3306/ --username root --password admin
结果:列出mysql库信息
2.sqoop import
2.1 先在hive中建表 :
create table default.test_sqoop(id int,name string);
sqoop import --connect jdbc:mysql://hadoop1:3306/test \
--username root \
--password 123456 \
--table test_sqoop \
--hive-import \
--create-hive-table \
-m 1
2.2 直接语句建表(--create-hive-table):
sqoop import --connect jdbc:mysql://hadoop1:3306/test \
--username root \
--password 123456 \
--table test_sqoop \
--hive-import \
--create-hive-table \
-m 1
2.3 自动创建表(--create-hcatalog-table):
--create-hcatalog-table #根据hcatalog接口
-D mapred.job.queue.name=transport #指定固定yarn队列
sudo -u tsqoop #指定固定队列用户
sudo -u tuser sqoop import -D mapred.job.queue.name=tqueue \
--connect jdbc:mysql://hadoop1:3306/test?useSSL=false \
--username root \
--password 123456 \
--table test_sqoop \
--hcatalog-table test_sqoop \
--hcatalog-database test \
--hcatalog-storage-stanza "stored as orc" \ #生成对应的orc格式
-m 2
3.sqoop export
sudo -u tuser sqoop export -D mapred.job.queue.name=tqueue \
--connect jdbc:mysql://hadoop1:3306/test?useSSL=false \
--username root \
--password 123456 \
--table test_sqoop \
--columns id,code ... \ #对应的列 顺序格式
--hcatalog-database=test \
--hcatalog-table=test_sqoop \
-m 2
4.更新操作
sqoop export -D mapred.job.queue.name=root.tqueue \
--connect jdbc:mysql://xxx.xxx.xxx:3306/mysql_db \
--username mysql_user \
--password mysql_pwd \
--table mysql_table \
--columns id,company,datetime \
--hcatalog-database=hive_db \
--hcatalog-table=hive_table \
--update-key id \
--update-mode allowinsert
注:做个记录 方便查找