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
 
参数
说明
–bindir <dir>
指定生成的java文件、编译成的class文件及将生成文件打包为JAR的JAR包文件输出路径
–class-name <name>
设定生成的Java文件指定的名称
–outdir <dir>
生成的java文件存放路径
–package-name<name>
包名,如cnnic,则会生成cn和cnnic两级目录,生成的文件(如java文件)就存放在cnnic目录里
–input-null-non-string<null-str>
在生成的java文件中,可以将null字符串设为想要设定的值(比如空字符串’’)
–input-null-string<null-str>
同上,设定时,最好与上面的属性一起设置,且设置同样的值(比如空字符串等等)。
–map-column-java<arg>
数据库字段在生成的java文件中会映射为各种属性,且默认的数据类型与数据库类型保持对应,比如数据库中某字段的类型为bigint,则在Java文件中的数据类型为long型,通过这个属性,可以改变数据库字段在java中映射的数据类型,格式如:–map-column-java DB_ID=String,id=Integer
–null-non-string<null-str>
在生成的java文件中,比如TBL_ID==null?”null”:””,通过这个属性设置可以将null字符串设置为其它值如ddd,TBL_ID==null?”ddd”:””
–null-string<null-str>
同上,使用的时候最好和上面的属性一起用,且设置为相同的值
–table <table-name>
对应关系数据库的表名,生成的java文件中的各属性与该表的各字段一一对应。
 
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
参数
说明
–hive-home <dir>
Hive的安装目录,可以通过该参数覆盖掉默认的hive目录
–hive-overwrite
覆盖掉在hive表中已经存在的数据
–create-hive-table
默认是false,如果目标表已经存在了,那么创建任务会失败
–hive-table
后面接要创建的hive表
–table
指定关系数据库表名
 
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
mysql操作官方文档
参数
说明
–direct
快速模式,利用了数据库的导入工具,如mysql的mysqlimport,可以比jdbc连接的方式更为高效的将数据导入到关系数据库中。
–export-dir <dir>
存放数据的HDFS的源目录
-m,–num-mappers <n>
启动N个map来并行导入数据,默认是4个,最好不要将数字设置为高于集的最大Map数
–table <table-name>
要导入到的关系数据库表
–update-key <col-name>
后面接条件列名,通过该参数,可以将关系数据库中已经存在的数据进行更新操作,类似于关系数据库中的update操作
–update-mode <mode>
更新模式,有两个值updateonly和默认的allowinsert,该参数只能是在关系数据表里不存在要导入的记录时才能使用,比如要导入的hdfs中有一条id=1的记录,如果在表里已经有一条记录id=2,那么更新会失败。
–input-null-string <null-string>
可选参数,如果没有指定,则字符串null将被使用
–input-null-non-string <null-string>
可选参数,如果没有指定,则字符串null将被使用
–staging-table <staging-table-name>
该参数是用来保证在数据导入关系数据库表的过程中事务安全性的,因为在导入的过程中可能会有多个事务,那么一个事务失败会影响到其它事务,比如导入的数据会出现错误或出现重复的记录等等情况,那么通过该参数可以避免这种情况。创建一个与导入目标表同样的数据结构,保留该表为空在运行数据导入前,所有事务会将结果先存放在该表中,然后最后由该表通过一次事务将结果写入到目标表中。
–clear-staging-table
如果该staging-table非空,则通过该参数可以在运行导入前清除staging-table里的数据。
–batch
该模式用于执行基本语句(暂时还不太清楚含义)
 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。