当前位置:文档之家› Sqoop官方中文手册

Sqoop官方中文手册

Sqoop官方中文手册
Sqoop官方中文手册

Sqoop中文手册

1. 概述

本文档主要对SQOOP的使用进行了说明,参考内容主要来自于Cloudera SQOOP的官方文档。为了用中文更清楚明白地描述各参数的使用含义,本文档几乎所有参数使用说明都经过了我的实际验证而得到。

2. codegen

将关系数据库表映射为一个java文件、java class类、以及相关的jar包,

1、将数据库表映射为一个Java文件,在该Java文件中对应有表的各个字段。

2、生成的Jar和class文件在metastore功能使用时会用到。

基础语句:

sqoop codegen –connect jdbc:mysql://localhost:3306/hive –username root

–password 123456 –table TBLS2

3. create-hive-table

生成与关系数据库表的表结构对应的HIVE表

基础语句:

sqoop create-hive-table –connect jdbc:mysql://localhost:3306/hive -username root -password 123456 –table TBLS –hive-table h_tbls2

4. eval

可以快速地使用SQL语句对关系数据库进行操作,这可以使得在使用import这种工具进行数据导入的时候,可以预先了解相关的SQL语句是否正确,并能将结果显示在控制台。

查询示例:

sqoop eval –connect jdbc:mysql://localhost:3306/hive -username root -password 123456 -query ―SELECT * FROM tbls LIMIT 10″

数据插入示例:

sqoop eval –connect jdbc:mysql://localhost:3306/hive -username root -password 123456 -e ―INSERT INTO TBLS2

VALUES(100,1375170308,1,0,‘hadoop‘,0,1,‘guest‘,‘MANAGED_TABLE‘,‘abc‘,‘ddd‘)‖

-e、-query这两个参数经过测试,比如后面分别接查询和插入SQL语句,皆可运行无误,如上。

5. export

从hdfs中导数据到关系数据库中

sqoop export –connect jdbc:mysql://localhost:3306/hive –username root

–password

123456 –table TBLS2 –export-dir sqoop/test

6. import

将数据库表的数据导入到hive中,如果在hive中没有对应的表,则自动生成与数据库表名相同的表。

sqoop import –connect jdbc:mysql://localhost:3306/hive –username root

–password

123456 –table user –split-by id –hive-import

–split-by指定数据库表中的主键字段名,在这里为id。

增量导入

对incremental参数,如果是以日期作为追加导入的依据,则使用lastmodified,否则就使用append值。

7. import-all-tables

将数据库里的所有表导入到HDFS中,每个表在hdfs中都对应一个独立的目录。

sqoop import-all-tables –connect jdbc:mysql://localhost:3306/test

sqoop import-all-tables –connect jdbc:mysql://localhost:3306/test –hive-import

8. job

用来生成一个sqoop的任务,生成后,该任务并不执行,除非使用命令执行该任务。sqoop job

9. list-databases

打印出关系数据库所有的数据库名

sqoop list-databases –connect jdbc:mysql://localhost:3306/ -username root

-password 123456

10.list-tables

打印出关系数据库某一数据库的所有表名

sqoop list-tables –connect jdbc:mysql://localhost:3306/zihou -username root

-password 123456

11. merge

将HDFS中不同目录下面的数据合在一起,并存放在指定的目录中,示例如:

sqoop merge –new-data /test/p1/person –onto /test/p2/person –target-dir

/test/merged –jar-file /opt/data/sqoop/person/Person.jar –class-name Person

–merge-key id

其中,–class-name所指定的class名是对应于Person.jar中的Person类,而Person.jar 是通过Codegen生成的

12. metastore

记录sqoop job的元数据信息,如果不启动metastore实例,则默认的元数据存储目录为:~/.sqoop,如果要更改存储目录,可以在配置文件sqoop-site.xml中进行更改。

metastore实例启动:sqoop metastore

13. version

显示sqoop版本信息语句:sqoop version 14. help

打印sqoop帮助信息语句:sqoop help 15.公共参数Hive参数

数据库连接参数

文件输出参数用于import场景。示例如:

sqoop import –connect jdbc:mysql://localhost:3306/test –username root –P –table person –split-by id –check-column id –incremental append –last-value 1

–enclosed-by ?\‖?

–escaped-by \# –fields-terminated-by .

文件输入参数

对数据格式的解析,用于export场景,与文件输出参数相对应。

示例如:

sqoop export –connect jdbc:mysql://localhost:3306/test –username root

–password

123456 –table person2 –export-dir /user/hadoop/person –staging-table person3 –clear-staging-table –input-fields-terminated-by ?,‘

在hdfs中存在某一格式的数据,在将这样的数据导入到关系数据库中时,必须要按照该格式来解析出相应的字段值,比如在hdfs中有这样格式的数据:

3,jimsss,dd@https://www.doczj.com/doc/2a701881.html,,1,2013-08-07 16:00:48.0,‖hehe‖,

上面的各字段是以逗号分隔的,那么在解析时,必须要以逗号来解析出各字段值,如:

–input-fields-terminated-by ?,‘

相关主题
文本预览
相关文档 最新文档