Sqoop官方中文手册.docx
- 文档编号:2028902
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:4
- 大小:20.70KB
Sqoop官方中文手册.docx
《Sqoop官方中文手册.docx》由会员分享,可在线阅读,更多相关《Sqoop官方中文手册.docx(4页珍藏版)》请在冰豆网上搜索。
Sqoop官方中文手册
Sqoop官方中文手册
Sqoop中文手册 1.概述 档主要对SQOOP的使用进行了说明,参考内容主要来自于ClouderaSQOOP的官方文档。
为了用中文更清楚明白地描述各参数的使用含义,档几乎所有参数使用说明都经过了我的实际验证而得到。
2.codegen 将关系数据库表映射为一个java文件、javaclass类、以及相关的jar包,1、将数据库表映射为一个Java文件,在该Java文件中对应有表的各个字段。
2、生成的Jar和class文件在metastore功能使用时会用到。
基础语句:
sqoopcodegen–connectjdbc:
mysql:
//localhost:
3306/hive–usernameroot–password123456–tableTBLS2 参数说明–bindir指定生成的java文件、编译成的class文件及将生成文件打包为JAR的JAR包文件输–class-name–outdir生成的java文件存放路径–package-name包名,如,则会生成cn和cnnic两级目录,生成的文件就存放在cnnic目录里–input-null-non-string在生成的java文件中,可以将null字符串设为想要设定的值–input-null-string同上,设定时,最好与上面的属性一起设置,且设置同样的值。
–map-column-java数据库字段在生成的java文件中会映射为各种属性,且默认的数据类型与数据库类型保持对应,比如数据库中某字段的类型为bigint,则在Java文件中的数据类型为long型,通过这个属性,可以改变数据库字段在java中映射的数据类型,格式如:
–map-column-javaDB_ID=String,id=Integer–null-non-string在生成的java文件中,比如TBL_ID==null?
‖null‖:
‖‖,通过这个属性设置可以将null字符串设置为其它值如ddd,TBL_ID==null?
‖ddd‖:
‖‖–null-string同上,使用的时候最好和上面的属性一起用,且设置为相同的值–table对应关系数据库的表名,生成的java文件中的各属性与该表的各字段一一对应。
3.create-hive-table 生成与关系数据库表的表结构对应的HIVE表基础语句:
sqoopcreate-hive-table–connectjdbc:
mysql:
//localhost:
3306/hive-usernameroot-password123456–tableTBLS–hive-tableh_tbls2 参数–hive-homeHive的安装目录,可以通过该参数覆盖掉默认的hive目录–hive-overwrite覆盖掉在hive表中已经存在的数据–create-hive-table默认是false,如果目标表已经存在了,那么创建任务会失败–hive-table后面接要创建的hive表–table指定关系数据库表名4.eval 可以快速地使用SQL语句对关系数据库进行操作,这可以使得在使用import这种工具进行数据导入的时候,可以预先了解相关的SQL语句是否正确,并能将结果显示在控制台。
查询示例:
sqoopeval–connectjdbc:
mysql:
//localhost:
3306/hive-usernameroot-password123456-query―SELECT*FROMtblsLIMIT10″数据插入示例:
sqoopeval–connectjdbc:
mysql:
//localhost:
3306/hive-usernameroot-password123456-e―INSERTINTOTBLS2 VALUES(100,1375170308,1,0,‘hadoop‘,0,1,‘guest‘,‘MANAGED_TABLE‘,‘abc‘,‘ddd‘)‖-e、-query这两个参数经过测试,比如后面分别接查询和插入SQL语句,皆可运行无误,如上。
5.export 从hdfs中导数据到关系数据库中 sqoopexport–connectjdbc:
mysql:
//localhost:
3306/hive–usernameroot–password 123456–tableTBLS2–export-dirsqoop/test 参数说明–direct快速模式,利用了数据库的导入工具,如mysql的mysqlimport,可以比jdbc连接的方式更为高效的将数据导入到关系数据库中。
–export-dir存放数据的HDFS的源目录-m,–num-mappers启动N个map来并行导入数据,默认是4个,最好不要将数字设置为高于集群的最大Map数–table要导入到的关系数据库表–update-key后面接条件列名,通过该参数,可以将关系数据库中已经存在的数据进行更新操作,类似于关系数据库中的update操作–update-mode更新模式,有两个值updateonly和默认的allowinsert,该参数只能是在关系数据表里不存在要导入的记录时才能使用,比如要导入的hdfs中有一条id=1的记录,如果在表里已经有一条记录id=2,那么更新会失败。
–input-null-string可选参数,如果没有指定,则字符串null将被使用–input-null-non-string可选参数,如果没有指定,则字符串null将被使用–staging-table该参数是用来保证在数据导入关系数据库表的过程中事务安全性的,因为在导入的过程中可能会有多个事务,那么一个事务失败会影响到其它事务,比如导入的数据会出现错误或出现重复的记录等等情况,那么通过该参数可以避免这种情况。
创建一个与导入目标表同样的数据结构,保留该表为空在运行数据导入前,所
有事务会将结果先存放在该表中,然后最后该表通过一次事务将结果写入到目标表中。
–clear-staging-table如果该staging-table非空,则通过该参数可以在运行导入前清除staging-table里的数据。
–batch该模式用于执行基本语句6.import 将数据库表的数据导入到hive中,如果在hive中没有对应的表,则自动生成与数据库表 名相同的表。
sqoopimport–connectjdbc:
mysql:
//localhost:
3306/hive–usernameroot–password 123456–tableuser–split-byid–hive-import–split-by指定数据库表中的主键字段名,在这里为id。
参数说明–append将数据追加到hdfs中已经存在的dataset中。
使用该参数,sqoop将把数据先导入到一个临时目录中,然后重新给文件命名到一个正式的目录中,以避免和该目录中已存在的文件重名。
–as-avrodatafile将数据导入到一个Avro数据文件中–as-sequencefile将数据导入到一个sequence文件中–as-textfile将数据导入到一个普通文件中,生成该文件后,可以在hive中通过sql语句查询出结果。
–boundary-query边界查询,也就是在导入前先通过SQL查询得到一个结果集,然后导入的数据就是该结果集内的数据,格式如:
–boundary-query?
selectid,creationdatefrompersonwhereid=3‘,表示导入的数据为id=3的记录,或者selectmin(),max()from,注意查询的字段中不能有数据类型为字符串的字段,否则会报错:
:
InvalidvalueforgetLong()目前问题原因还未知–columns指定要导入的字段值,格式如:
–columnsid,username–direct直接导入模式,使用的是关系数据库自带的导入导出工具。
官网上是说这样导入会更快–direct-split-size在使用上面direct直接导入的基础上,对导入的流按字节数分块,特别是使用直连模式从PostgreSQL导入数据的时候,可以将一个到达设定大小的文件分为几个独立的文件。
–inline-lob-limit设定大对象数据类型的最大值-m,–num-mappers启动N个map来并行导入数据,默认是4个,最好不要将数字设置为高于集群的节点数–query,-e从查询结果中导入数据,该参数使用时必须指定–target-dir、–hive-table,在查询语句中一定要有where条件且在where条件中需要包含$CONDITIONS,示例:
–query?
select*frompersonwhere$CONDITIONS?
–target-dir/user/hive/warehouse/person–hive-tableperson–split-by表的列名,用来切分工作单元,一般后面跟主键ID–table关系数据库表名,数据从该表中获取–target-dir指定hdfs路径–warehouse-dir与–target-dir不能同时使用,指定数据导入的存放目录,适用于hdfs导入,不适合导入hive目录–where从关系数据库导入数据时的查询条件,示例:
–where?
id=2′-z,–compress压缩参数,默认情况下数据是没被压缩的,通过该参数可以使用gzip压缩算法对数据进行压缩,适用于SequenceFile,text文件,和Avro文件–compression-codecHadoop压缩编码,默认是gzip–null-string可选参数,如果没有指定,则字符串null将被使用–null-non-string可选参数,如果没有指定,则字符串null将被使用增量导入 参数说明–check-column(col)用来作为判断的列名,如id–incremental(mode)append:
追加,比如对大于last-value指定的值之后的记录进行追加导入。
lastmodified:
最后的修改时间,追加last-value指定的日期之后的记录–last-value(value)指定自从上次导入后列的最大值,也可以自己设定某一值对incremental参数,如果是以日期作为追加导入的依据,则使用lastmodified,否则就使用append值。
7.import-all-tables 将数据库里的所有表导入到HDFS中,每个表在hdfs中都对应一个独立的目录。
sqoopimport-all-tables–connectjdbc:
mysql:
//localhost:
3306/test sqoopimport-all-tables–connectjdbc:
mysql:
//localhost:
3306/test–hive-import 参数说明–as-avrodatafile同import参数–as-sequencefile同import参数–as-textfile同import参数–direct同import参数–direct-split-size同import参数–inline-lob-limit同import参数-m,–num-mappers
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Sqoop 官方 中文 手册