sqoop java集成_sqoop导入到HDFS怎么都是java文件总结

边 界查询,也就是在导入前先通过SQL查询得到一个结果集,然后导入的数据就是该结果集内的数据,格式如:–boundary-query ‘select id,creationdate from person where id = 3′,表示导入的数据为id=3的记录,或者select min(), max() from ,注意查询的字段中不能有数据类型为字符串的字段,否则会报错:java.sql.SQLException: Invalid value for

getLong()

目前问题原因还未知

–columns

指定要导入的字段值,格式如:–columns id,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 * from person where $CONDITIONS ‘ –target-dir

/user/hive/warehouse/person –hive-table person

–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中都对应一个独立的目录。

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

sqoop import-all-tables –connect jdbc: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同import参数

–warehouse-dir同import参数

-z,–compress同import参数

–compression-codec同import参数

8.     job

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

sqoop job参数说明

–create生成一个job,示例如:sqoop job –create myjob — import –connectjdbc:mysql://localhost:3306/test –table

person

–delete删除一个jobsqoop job –delete myjob

–exec执行一个jobsqoop job –exec myjob

–help显示帮助说明

–list显示所有的jobsqoop job –list

–meta-connect用来连接metastore服务,示例如:–meta-connect jdbc:hsqldb:hsql://localhost:16000/sqoop

–show显示一个job的各种参数sqoop job –show myjob

–verbose打印命令运行时的详细信息

9.     list-databases

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

sqoop list-databases –connect jdbc:mysql://localhost:3306/ -username root -password 12345610.             list-tables

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

sqoop list-tables –connect jdbc:mysql://localhost:3306/zihou -username root -password 12345611.             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生成的参数说明

–new-dataHdfs中存放数据的一个目录,该目录中的数据是希望在合并后能优先保留的,原则上一般是存放越新数据的目录就对应这个参数。

–ontoHdfs中存放数据的一个目录,该目录中的数据是希望在合并后能被更新数据替换掉的,原则上一般是存放越旧数据的目录就对应这个参数。

–merge-key

合并键,一般是主键ID

–jar-file合并时引入的jar包,该jar包是通过Codegen工具生成的jar包

–class-name对应的表名或对象名,该class类是包含在jar包中的。

–target-dir合并后的数据在HDFS里的存放目录

12.             metastore

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

metastore实例启动:sqoop metastore

参数说明

–shutdown关闭一个运行的metastore实例13.             version

显示sqoop版本信息

语句:sqoop version14.             help

打印sqoop帮助信息

语句:sqoop help15.             公共参数Hive参数参数说明

–hive-delims-replacement用自定义的字符串替换掉数据中的\n, \r, and \01等字符

–hive-drop-import-delims在导入数据到hive中时,去掉数据中\n,\r和\01这样的字符

–map-column-hive生成hive表时,可以更改生成字段的数据类型,格式如:–map-column-hiveTBL_ID=String,LAST_ACCESS_TIME=string

–hive-partition-key创建分区,后面直接跟分区名即可,创建完毕后,通过describe 表名可以看到分区名,默认为string型

–hive-partition-value该值是在导入数据到hive中时,与–hive-partition-key设定的key对应的value值。

–hive-homeHive的安装目录,可以通过该参数覆盖掉默认的hive目录

–hive-import将数据从关系数据库中导入到hive表中

–hive-overwrite覆盖掉在hive表中已经存在的数据

–create-hive-table默认是false,如果目标表已经存在了,那么创建任务会失败

–hive-table后面接要创建的hive表

–table指定关系数据库表名数据库连接参数参数说明

–connectJdcb连接url,示例如:–connect jdbc:mysql://localhost:3306/hive

–connection-manager指定要使用的连接管理类

–driver数据库驱动类

–hadoop-homeHadoop根目录

–help打印帮助信息

-P从控制端读取密码

–passwordJdbc url中的数据库连接密码

–usernameJdbc url中的数据库连接用户名

–verbose在控制台打印出详细信息

–connection-param-file一个记录着数据库连接参数的文件文件输出参数

用于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 .

参数说明

–enclosed-by给字段值前后加上指定的字符,比如双引号,示例:–enclosed-by ‘\”‘,显示例子:”3″,”jimsss”,”dd@dd.com”

–escaped-by给双引号作转义处理,如字段值为”测试”,经过–escaped-by \\处理后,在hdfs中的显示值为:\”测试\”,对单引号无效

–fields-terminated-by设定每个字段是以什么符号作为结束的,默认是逗号,也可以改为其它符号,如句号.,示例如:–fields-terminated-by.

–lines-terminated-by设定每条记录行之间的分隔符,默认是换行,但也可以设定自己所需要的字符串,示例如:–lines-terminated-by ‘#’ 以#号分隔

–mysql-delimitersMysql默认的分隔符设置,字段之间以,隔开,行之间以换行\n隔开,默认转义符号是\,字段值以单引号’包含起来。

–optionally-enclosed-byenclosed-by是强制给每个字段值前后都加上指定的符号,而–optionally-enclosed-by只是给带有双引号或单引号的字段值加上指定的符号,故叫可选的。示例如:–optionally-enclosed-by ‘$’

显示结果:

$”hehe”,测试$文件输入参数

对数据格式的解析,用于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@dd.com,1,2013-08-07 16:00:48.0,”hehe”,测试

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

–input-fields-terminated-by ‘,’参数说明

–input-enclosed-by对字段值前后有指定的字符,比如双引号的值进行解析:–input-enclosed-by ‘\”‘,数据例子:”3″,”jimsss”,”dd@dd.com”

–input-escaped-by对含有转义双引号的字段值作转义处理,如字段值为\”测试\”,经过–input-escaped-by \\处理后,解析得到的值为:”测试”,对单引号无效。

–input-fields-terminated-by以字段间的分隔符来解析得到各字段值,示例如:– input-fields-terminated-by,

–input-lines-terminated-by以每条记录行之间的分隔符来解析得到字段值,示例如:–input-lines-terminated-by ‘#’ 以#号分隔

–input-optionally-enclosed-by与–input-enclosed-by功能相似,与–input-enclosed-by的区别参见输出参数中对–optionally-enclosed-by的描述

16.             参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值