
目录
Sqoop简介:
配置文件:
Sqoop使用
Sqoop简介:
sqoop 是 apache 旗下一款“Hadoop 和关系数据库服务器之间传送数据”的工具。
数据导入:
MySQL,Oracle 导入数据到 Hadoop 的 HDFS、HIVE、Hbase 等数据存储系统
数据导出:
从 Hadoop 的文件系统中导出数据到关系数据库 mysql 等
配置文件:1.环境变量配置
export SQOOP_HOME=/opt/module/ha/sqoop export PATH=$PATH:$SQOOP_HOME/bin
2.配置sqoop中的
文件
hadoop,hive,hbase需要用到就配置起来即可
Sqoop使用codegen
作用:
生成代码以与数据库记录交互,将关系型数据库中的表映射为一个Java类,在该类中有各列对应的各个字段。
示例:
bin/sqoop codegen --connect jdbc:mysql://ljx:3306/company --username root --password 123456 --table staff --bindir /opt/module/sqoop/staff ###文件夹需要存在 --class-name Staff --fields-terminated-by "t" --outdir /opt/module/sqoop/staff ###文件夹需要存在
create-hive-table
作用:
将表定义导入 Hive,生成与关系数据库表结构对应的hive表结构
示例:
sqoop create-hive-table --connect jdbc:mysql://ljx:3306/sample --username root --password 123456 --table student --hive-table hive-student
eval
作用:
评估 SQL 语句并显示结果,经常用于在import数据之前,了解一下SQL语句是否正确,数据是否正常,并可以将结果显示在控制台。
示例:
sqoop eval --connect jdbc:mysql://ljx:3306/mysql --username root --password 123456 --query "select * from user"
export(很重要)
作用:
从HDFS(包括Hive和Hbase)中将数据导出到关系型数据库中。
示例:
sqoop export --connect jdbc:mysql://ljx:3306/sample --username root --password 123456 --table student --export-dir /user/hive/warehous/jjj --input-fields-terminated-by "t" -m 1
import(重要)
作用:
将表从数据库导入 HDFS,(包括Hive,Hbase)中,如果导入的是Hive,那么当Hive中没有对应表时,则自动创建。
示例:将mysql中user表数据导入到hdfs中
sqoop import --connect jdbc:mysql://ljx:3306/mysql --username root --password 123456 --table user
import-all-tables
作用:
可以将RDBMS中的所有表导入到HDFS中,每一个表都对应一个HDFS目录
限制条件:
每个表都必须有一个单列主键,或者指定--autoreset-to-one-mapper参数。
每个表只能import全部列,即不可指定列import。
示例:
sqoop import-all-tables --connect jdbc:mysql://ljx:3306/sample --username root --password 123456 --warehouse-dir /all_table
import-mainframe
作用:
直接import主机,这个命令过于暴力,和import-all-tables差别不大,等有需要在研究研究吧。
job
作用:
用来生成一个sqoop任务,生成后不会立即执行,需要手动执行。
示例:
创建job
qoop job --create myjob -- import-all-tables --connect jdbc:mysql://ljx:3006/mysql --username root --password 123456 --warehouse-dir /user/all_user
注意:在使用job中去执行sqoop的指令时需要在 --后面加上一个空格
list-databases
作用:
列出服务器上的可用数据库
示例:
sqoop list-databases --connect jdbc:mysql://ljx:3306 --username root --password 123456
list-tables
作用:
列出数据库中的可用表
示例:
sqoop list-tables --connect jdbc:mysql://ljx:3306/mysql --username root --password 123456
merge
作用:
将HDFS中不同目录下面的数据合并在一起并放入指定目录中
示例:
[victor@node1 sqoop-1.4.7]$ bin/sqoop merge --new-data /tdata/newdata/ --onto /tdata/olddata/ --target-dir /tdata/merged --jar-file /opt/module/sqoop/staff/Staff.jar --class-name Staff --merge-key id
metastore
作用:
记录了Sqoop job的元数据信息,如果不启动该服务,那么默认job元数据的存储目录为~/.sqoop,可在sqoop-site.xml中修改。
示例:
启动sqoop的metastore服务
sqoop metastore
version
作用:
显示版本信息
示例:
sqoop version
同过sqoop将mysql数据传给hive
sqoop import --connect jdbc:mysql://ljx:3306/sample --username root --password 123456 --table student --hive-import -m 1
与使用import 导入到hdfs相比只多了 --hive-import ,如果要指定hive的数据库和表可以使用 --hive-database 与--hive-table 来指定
同过sqoop将mysql数据传给hbase
sqoop import --connect jdbc:mysql://ljx:3306/mysql --username root --password 123456 --table help_keyword --hbase-table new_help_keyword --column-family person --hbase-row-key help_keyword_id
注意点:导入时hbase中应该存在指定的表
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)