返回顶部
首页 > 资讯 > 数据库 >sqoop 中文手册
  • 790
分享到

sqoop 中文手册

2024-04-02 19:04:59 790人浏览 安东尼
摘要

1.     概述本文档主要对SQOOP的使用进行了说明,参考内容主要来自于Cloudera 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>包名,如cn.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

参数说明
–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该模式用于执行基本语句(暂时还不太清楚含义)

 

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。

参数说明
–append将数据追加到hdfs中已经存在的dataset中。使用该参数,sqoop将把数据先导入到一个临时目录中,然后重新给文件命名到一个正式的目录中,以避免和该目录中已存在的文件重名。
–as-avrodatafile将数据导入到一个Avro数据文件中
–as-sequencefile将数据导入到一个sequence文件中
–as-textfile将数据导入到一个普通文本文件中,生成该文本文件后,可以在hive中通过sql语句查询出结果。
–boundary-query <statement>边界查询,也就是在导入前先通过SQL查询得到一个结果集,然后导入的数据就是该结果集内的数据,格式如:–boundary-query ‘select id,creationdate from person where id = 3’,表示导入的数据为id=3的记录,或者select min(<split-by>), max(<split-by>) from <table name>,注意查询的字段中不能有数据类型为字符串的字段,否则会报错:java.sql.SQLException: Invalid value for


getLong()

目前问题原因还未知

 

–columns<col,col,col…>指定要导入的字段值,格式如:–columns id,username
–direct直接导入模式,使用的是关系数据库自带的导入导出工具。官网上是说这样导入会更快
–direct-split-size在使用上面direct直接导入的基础上,对导入的流按字节数分块,特别是使用直连模式从postgresql导入数据的时候,可以将一个到达设定大小的文件分为几个独立的文件。
–inline-lob-limit设定大对象数据类型的最大值
-m,–num-mappers启动N个map来并行导入数据,默认是4个,最好不要将数字设置为高于集群的节点数
–query,-e<statement>从查询结果中导入数据,该参数使用时必须指定–target-dir、–hive-table,在查询语句中一定要有where条件且在where条件中需要包含$CONDITIONS,示例:–query ‘select * from person where $CONDITIONS ‘ –target-dir


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

–split-by<column-name>表的列名,用来切分工作单元,一般后面跟主键ID
–table <table-name>关系数据库表名,数据从该表中获取
–target-dir <dir>指定hdfs路径
–warehouse-dir <dir>与–target-dir不能同时使用,指定数据导入的存放目录,适用于hdfs导入,不适合导入hive目录
–where从关系数据库导入数据时的查询条件,示例:–where ‘id = 2’
-z,–compress压缩参数,默认情况下数据是没被压缩的,通过该参数可以使用gzip压缩算法对数据进行压缩,适用于SequenceFile, text文本文件, 和Avro文件
–compression-codecHadoop压缩编码,默认是gzip
–null-string <null-string>可选参数,如果没有指定,则字符串null将被使用
–null-non-string<null-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 <n>同import参数
–inline-lob-limit <n>同import参数
-m,–num-mappers <n>同import参数
–warehouse-dir <dir>同import参数
-z,–compress同import参数
–compression-codec同import参数

 

8.     job

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

sqoop job

参数说明
–create <job-id>生成一个job,示例如:sqoop job –create myjob  — import –connectjdbc:mysql://localhost:3306/test –table


person

 

–delete <job-id>删除一个jobsqoop job –delete myjob
–exec <job-id>执行一个jobsqoop job –exec myjob
–help显示帮助说明
–list显示所有的jobsqoop job –list
–meta-connect <jdbc-uri>用来连接metastore服务,示例如:–meta-connect jdbc:hsqldb:hsql://localhost:16000/sqoop
–show <job-id>显示一个job的各种参数sqoop job –show myjob
–verbose打印命令运行时的详细信息

 

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生成的

参数说明
–new-data <path>Hdfs中存放数据的一个目录,该目录中的数据是希望在合并后能优先保留的,原则上一般是存放越新数据的目录就对应这个参数。
–onto <path>Hdfs中存放数据的一个目录,该目录中的数据是希望在合并后能被更新数据替换掉的,原则上一般是存放越旧数据的目录就对应这个参数。
–merge-key <col>合并键,一般是主键ID
–jar-file <file>合并时引入的jar包,该jar包是通过Codegen工具生成的jar包
–class-name <class>对应的表名或对象名,该class类是包含在jar包中的。
–target-dir <path>合并后的数据在HDFS里的存放目录

 

12.             metastore

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

metastore实例启动:sqoop metastore

 

参数说明
–shutdown关闭一个运行的metastore实例

13.             version

显示sqoop版本信息

语句:sqoop version

14.             help

打印sqoop帮助信息

语句:sqoop help

15.             公共参数

Hive参数

参数说明
–hive-delims-replacement <arg>用自定义的字符串替换掉数据中的\n, \r, and \01等字符
–hive-drop-import-delims在导入数据到hive中时,去掉数据中\n,\r和\01这样的字符
–map-column-hive <arg>生成hive表时,可以更改生成字段的数据类型,格式如:–map-column-hiveTBL_ID=String,LAST_ACCESS_TIME=string
–hive-partition-key创建分区,后面直接跟分区名即可,创建完毕后,通过describe 表名可以看到分区名,默认为string型
–hive-partition-value<v>该值是在导入数据到hive中时,与–hive-partition-key设定的key对应的value值。
–hive-home <dir>Hive的安装目录,可以通过该参数覆盖掉默认的hive目录
–hive-import将数据从关系数据库中导入到hive表中
–hive-overwrite覆盖掉在hive表中已经存在的数据
–create-hive-table默认是false,如果目标表已经存在了,那么创建任务会失败
–hive-table后面接要创建的hive表
–table指定关系数据库表名

数据库连接参数

参数说明
–connect <jdbc-uri>Jdcb连接url,示例如:–connect jdbc:mysql://localhost:3306/hive
–connection-manager <class-name>指定要使用的连接管理类
–driver <class-name>数据库驱动类
–hadoop-home <dir>Hadoop根目录
–help打印帮助信息
-P从控制端读取密码
–password <password>Jdbc url中的数据库连接密码
–username <username>Jdbc url中的数据库连接用户名
–verbose在控制台打印出详细信息
–connection-param-file <filename>一个记录着数据库连接参数的文件

文件输出参数

用于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 <char>给字段值前后加上指定的字符,比如双引号,示例:–enclosed-by ‘\”‘,显示例子:”3″,”jimsss”,”dd@dd.com”
–escaped-by <char>给双引号作转义处理,如字段值为”测试”,经过–escaped-by \\处理后,在hdfs中的显示值为:\”测试\”,对单引号无效
–fields-terminated-by <char>设定每个字段是以什么符号作为结束的,默认是逗号,也可以改为其它符号,如句号.,示例如:–fields-terminated-by.
–lines-terminated-by <char>设定每条记录行之间的分隔符,默认是换行,但也可以设定自己所需要的字符串,示例如:–lines-terminated-by ‘#’ 以#号分隔
–mysql-delimitersMysql默认的分隔符设置,字段之间以,隔开,行之间以换行\n隔开,默认转义符号是\,字段值以单引号’包含起来。
–optionally-enclosed-by <char>enclosed-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 <char>对字段值前后有指定的字符,比如双引号的值进行解析:–input-enclosed-by ‘\”‘,数据例子:”3″,”jimsss”,”dd@dd.com”
–input-escaped-by <char>对含有转义双引号的字段值作转义处理,如字段值为\”测试\”,经过–input-escaped-by \\处理后,解析得到的值为:”测试”,对单引号无效。
–input-fields-terminated-by <char>以字段间的分隔符来解析得到各字段值,示例如:– input-fields-terminated-by,
–input-lines-terminated-by <char>以每条记录行之间的分隔符来解析得到字段值,示例如:–input-lines-terminated-by ‘#’ 以#号分隔
–input-optionally-enclosed-by <char>与–input-enclosed-by功能相似,与–input-enclosed-by的区别参见输出参数中对–optionally-enclosed-by的描述

 


您可能感兴趣的文档:

--结束END--

本文标题: sqoop 中文手册

本文链接: https://lsjlt.com/news/36645.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • sqoop 中文手册
    1.     概述本文档主要对SQOOP的使用进行了说明,参考内容主要来自于Cloudera SQOOP的官方文档。为了用中文更清楚明白地描述各参数的使用含义,本文档...
    99+
    2024-04-02
  • S3C2440 中文手册 -5
    S3C2440 中文手册 第五章...
    99+
    2023-01-31
    中文 手册
  • S3C2440 中文手册 -7
    S3C2440 中文手册 第七章...
    99+
    2023-01-31
    中文 手册
  • S3C2440 中文手册 -18
    S3C2440 中文手册 第十八章...
    99+
    2023-01-31
    中文 手册
  • S3C2440 中文手册 -8
    S3C2440 中文手册 第八章...
    99+
    2023-01-31
    中文 手册
  • Postgresql中文参考手册
    http://www.postgres.cn/docs/9.3/index.html http://www.postgres.cn/docs/9.4/index.html http://www.postgres.cn/docs/9.5/...
    99+
    2015-01-12
    Postgresql中文参考手册
  • css中文参考手册在哪
    css 中文参考手册位于 w3c 网站上:导航至 w3c 网站。选择“标准”,再选“css”。向下滚动至“翻译”部分。点击“中文”重定向至中文参考手册。 CSS 中文参考手册 CSS ...
    99+
    2024-04-26
    css
  • MySQL 4.1.0 中文参考手册 --- 6.8 MySQL 全文搜索 (转)
    MySQL 4.1.0 中文参考手册 --- 6.8 MySQL 全文搜索 (转)[@more@] code {color:purple} tt {color:green} samp {color:navy...
    99+
    2024-04-02
  • 怎么在win10系统中手动注册dll文件
    这篇文章将为大家详细讲解有关怎么在win10系统中手动注册dll文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。手动注册dll文件方法/步骤:打开运行窗,输入regsvr32命令后回车。这时候大家就可以...
    99+
    2023-06-27
  • 如何在centos系统安装man中文手册manpages-zh
    本篇内容介绍了“如何在centos系统安装man中文手册manpages-zh ”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先确保安装z...
    99+
    2023-06-10
  • 免费下载获取Odoo中文开发 指南 手册
    Odoo是一个强大的商业应用开源平台。在此基础上,构建了一套紧密集成的应用程序,涵盖了从CRM到销售到股票和会计的所有业务领域。Odoo有一个动态和不断增长的社区,不断增加功能、连接器和其他商业应用。 Odoo 开发要点提供了一个逐步...
    99+
    2023-01-30
    中文 手册 指南
  • Linux中的Manual手册分析
    这篇文章主要讲解了“Linux中的Manual手册分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux中的Manual手册分析”吧!当今可能我们很多人已经不频繁使用man命令了,取而...
    99+
    2023-06-15
  • 如何安装使用渗透神器Kali手册中文版
    这篇文章主要讲解了“如何安装使用渗透神器Kali手册中文版”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何安装使用渗透神器Kali手册中文版”吧!一、默认的root密码安装Kali期间可以...
    99+
    2023-06-12
  • css中文手册当前页面发生错误怎么办
    发生“当前页面发生错误”错误时,请依次尝试:检查网络连接;刷新页面;清除浏览器缓存;禁用浏览器扩展;检查浏览器版本;联系网站管理员;尝试其他浏览器;查看浏览器控制台。 CSS 中文手册...
    99+
    2024-04-26
    css 网络问题
  • Python中datetime模块参考手册
    前言 Python提供了多个内置模块用于操作日期时间,像 calendar,time,datetime。time模块提供的接口与C标准库 time.h 基本一致。相比于 time 模块,datetime模块...
    99+
    2022-06-04
    模块 参考手册 Python
  • DedeCms参考手册、函数及文件大全
    文件:include/inc_function.php 系统默认会载入此文件 GetCurUrl() 获得当前的脚本的URL GetAlabNum($str) 把字符串里的全角数字转为半角数字(会把非数字类型字符删除)...
    99+
    2022-06-12
    DedeCms 参考手册
  • PHP 手册:查找函数文档的指南
    要查找 php 函数文档,请访问 php 手册并使用搜索栏搜索函数名称。文档包括函数原型、描述、参数、返回值和示例代码。使用“查找在页面中”功能搜索特定信息,查看“所有版本”选项卡了解不...
    99+
    2024-04-12
    文档 php
  • Linux系统怎么安装和使用man中文帮助手册
    本篇内容介绍了“Linux系统怎么安装和使用man中文帮助手册”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!刚学习linux有一份中文帮助手...
    99+
    2023-06-13
  • css中文手册当前页面发生错误怎么解决
    遇到 css 中文手册页面错误,可以通过以下步骤进行故障排除:检查网络连接;清除浏览器缓存;尝试不同的浏览器;禁用浏览器扩展;检查防火墙或代理设置;联系 css 中文手册团队。 CSS...
    99+
    2024-04-26
    css git
  • SqlMap使用手册
    0x00 SQLMAP简介sqlmap是一种开源的***测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器。它拥有非常大的检测引擎、具有多种特性的***实测器、通过数据库指纹提取访...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作