1.sqoop是什么

Sqoop是一款开源的数据迁移工具,主要用于Hadoop(Hive)与传统的关系型数据库(mysql...)相互之间的数据迁移。

2.sqoop的特点

sqoop的底层实现是mapreduce,所以sqoop依赖于hadoop,数据是并行导入的。

3.sqoop常用命令

sqoop help

1)列出mysql数据库中的所有数据库中的test数据库

 sqoop list-databases --connect jdbc:mysql://localhost:3306/test -usernametest -password
test

2)连接mysql并列出数据库中的表

sqoop list-tables --connect jdbc:mysql://localhost:3306/test --username test --password test

3)将关系型数据的表结构复制到hive中

sqoop create-hive-table --connect jdbc:mysql://localhost:3306/test --table users --username test

--password test --hive-table users  --fields-terminated-by "\0001"  --lines-terminated-by "\n";

参数说明:

--fields-terminated-by "\0001"  是设置每列之间的分隔符,"\0001"是ASCII码中的1,它也是hive的默认行内分隔符, 而sqoop的默认行内分隔符为"," --lines-terminated-by "\n"  设置的是每行之间的分隔符,此处为换行符,也是默认的分隔符;

注意:只是复制表的结构,表中的内容没有复制

4)将数据从关系数据库导入文件到hive表中

sqoop import --connect jdbc:mysql://localhost:3306/test --username test --password test 

--table users --hive-import --hive-table users -m 2 --fields-terminated-by "\0001";

参数说明:

-m 2 表示由两个map作业执行;

--fields-terminated-by "\0001"  需同创建hive表时保持一致;



5)将hive中的表数据导入到mysql数据库表中

sqoop export --connect jdbc:mysql://192.168.66.66:3306/test --username test --password test 

--table users --export-dir /user/hive/warehouse/users/part-m-00000 --input-fields-terminated-by '\0001'

注意:

a.在进行导入之前,mysql中的表users必须已经提起创建好了。

b.jdbc:mysql://192.168.66.66:3306/test中的IP地址改成localhost会报异常



6)将数据从关系数据库导入文件到hive表中,--query 语句使用

 sqoop import --append --connect jdbc:mysql://192.168.66.66/test --username test --password test --query "select id,age,name from userinfo where \$CONDITIONS"  -m 1  --target-dir /user/hive/warehouse/userinfos2 --fields-terminated-by ",";



7)将数据从关系数据库导入文件到hive表中,--columns  --where 语句使用

 sqoop import --append --connect jdbc:mysql://192.168.66.66:3306/test --username test --password test --table userinfo --columns "id,age,name"  --where "id > 3 and (age = 88 or age = 80)"  -m 1  --target-dir /user/hive/warehouse/userinfos2 --fields-terminated-by
",";

注意:--target-dir /user/hive/warehouse/userinfos   可以用  --hive-import --hive-table userinfos进行替换

8)mysql导入数据到HDFS   

sqoop import --connect jdbc:mysql://192.168.66.66:3306/test --username root --password 123456 --table test_user --target-dir  /usr/test -m 2 --fields-terminated-by "\t" --columns
"id,name"  --where 'id>2 and id<=6'

sqoop export --connect jdbc:mysql://192.168.66.66:3306/test --username root --password 123456 --export-dir '/usr/test' --table test -m 2

import的主要参数

--connect <jdbc-uri>    jdbc连接地址

--connection-manager <class-name>     连接管理者

--driver <class-name>     驱动类

--hadoop-mapred-home <dir>     $HADOOP_MAPRED_HOME

--help     help信息

-P     从命令行输入密码

--password <password>     密码

--username <username>     账号

--verbose    打印信息

--connection-param-file <filename>  可选参数





Argument     Description

--append     添加到hdfs中已经存在的dataset

--as-avrodatafile     导入数据作为avrodata

--as-sequencefile     导入数据位SequenceFiles

--as-textfile          默认导入数据为文本

--boundary-query <statement>     创建splits的边界

--columns <col,col,col…>     选择列

--direct             使用直接导入快速路径

--direct-split-size <n>     在快速模式下每n字节使用一个split

--fetch-size <n>     一次读入的数量

--inline-lob-limit <n>     最大数值 an inline LOB

-m,--num-mappers <n>     通过实行多少个map,默认是4个,某些数据库8 or 16性能不错

-e,--query <statement>     通过查询语句导入

--split-by <column-name>     创建split的列,默认是主键

--table <table-name>     要导入的表名

--target-dir <dir>     HDFS 目标路径

--warehouse-dir <dir>     HDFS parent for table destination

--where <where clause>     where条件

-z,--compress     Enable compression

--compression-codec <c>     压缩方式,默认是gzip

--null-string <null-string>    字符列null值

--null-non-string <null-string>     非字符列null值





export主要参数

--direct     快速导入

--export-dir <dir>     HDFS到处数据的目录

-m,--num-mappers <n>     都少个map线程

--table <table-name>     导出哪个表

--call <stored-proc-name>     存储过程

--update-key <col-name>     通过哪个字段来判断更新

--update-mode <mode>     插入模式,默认是只更新,可以设置为allowinsert.

--input-null-string <null-string>     字符类型null处理

--input-null-non-string <null-string>     非字符类型null处理

--staging-table <staging-table-name>     临时表

--clear-staging-table                     清空临时表

--batch                                     批量模式



转义字符相关参数。

Argument     Description

--enclosed-by <char>     设置字段结束符号

--escaped-by <char>     用哪个字符来转义

--fields-terminated-by <char>     字段之间的分隔符

--lines-terminated-by <char>     行分隔符

--mysql-delimiters             使用mysql的默认分隔符: , lines: \n escaped-by: \ optionally-enclosed-by: '

--optionally-enclosed-by <char>     复制结束符

hive导入参数

  --hive-home <dir>  重写$HIVE_HOME

  --hive-import          插入数据到hive当中,使用hive的默认分隔符

  --hive-overwrite  重写插入

  --create-hive-table  建表,如果表已经存在,该操作会报错!

  --hive-table <table-name>  设置到hive当中的表名

  --hive-drop-import-delims  导入到hive时删除 \n, \r, and \01 

  --hive-delims-replacement  导入到hive时用自定义的字符替换掉 \n, \r, and \01 

  --hive-partition-key          hive分区的key

  --hive-partition-value <v>  hive分区的值

  --map-column-hive <map>          类型匹配,sql类型对应到hive类型

Hive记录-Sqoop常用命令的更多相关文章

  1. Hive记录-impala常用命令

    1.impala是什么 Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据.已有的Hive系统虽然也提供了SQL ...

  2. 【Hadoop离线基础总结】Sqoop常用命令及参数

    目录 常用命令 常用公用参数 公用参数:数据库连接 公用参数:import 公用参数:export 公用参数:hive 常用命令&参数 从关系表导入--import 导出到关系表--expor ...

  3. 记录Nginx常用命令

    在此记录下Nginx服务器常用命令(CentOS7.2.Nginx1.14.2环境) 启动Nginx:./usr/sbin/nginx Nginx检查语法:nginx -tc /etc/nginx/n ...

  4. Hive记录-Beeline常用操作命令

    Beeline和其他工具有一些不同,执行查询都是正常的SQL输入,但是如果是一些管理的命令, 比如进行连接,中断,退出,执行Beeline命令需要带上"!",不需要终止符.常用命令 ...

  5. sqoop 常用命令集

    sqoop是一个介于分布式数据系统与关系型系统之间数据转换的一个数据转换工具 常用命令集sqoop2中sqoop-shell 创建link.job sqoop:001> show link 显示 ...

  6. sqoop 常用命令整理(二)

    26.Validate 它用来比较源数据和目标数据的数量 它有三个接口 Validator. 它有三个接口 Validator. Property: validator Description: Dr ...

  7. sqoop 常用命令整理(一)

    这些内容是从sqoop的官网整理出来的,是1.4.3版本的Document,如果有错误,希望大家指正. 1.使用sqoop导入数据 sqoop import --connect jdbc:mysql: ...

  8. 记录Vim常用命令

    命令 简单说明 i 进入编辑模式,光标在原位置 I 进入编辑模式,光标在行首位置 o 从光标所在行,下面一行开始编辑 O 从光标所在行,上面一行开始编辑 a 从光标当前字符后编辑 A 从光标所在行的行 ...

  9. linux学习记录.4.常用命令

    帮助command --help    获取‘command‘命令的帮助 目录与文件 cd /home    进入‘home’目录 cd ..    返回上一级目录 cd       进入个人目录 c ...

随机推荐

  1. activiti 选人的实现

    activiti默认是不带有选人的功能的,它默认的是在调用complete 方法的时候自动根据下一个节点的 assignee属性或者candidate属性 设置下一节点的候选人或者 assginee. ...

  2. PSP(4.27——5.3)以及周记录

    1.PSP 4.27 11:40 18:10 125 265 Cordova A Y min 4.28 10:00 16:50 200 210 Cordova A Y min 4.29 15:30 2 ...

  3. 周刷题第一期总结(two sum and two numbers)

    由于深深的知道自己是事件驱动型的人,一直想补强自己的薄弱环节算法,却完全不知道从哪里入手.所以只能采用最笨的办法,刷题.从刷题中遇到问题就解决问题,最后可能多多少少也能提高一下自己的渣算法吧. 暂时的 ...

  4. [转]curl的详细使用

    转自:http://www.cnblogs.com/gbyukg/p/3326825.html 下载单个文件,默认将输出打印到标准输出中(STDOUT)中 curl http://www.centos ...

  5. linux 单引号,双引号,反引号的小总结。

    还是老惯例说说事情的起因,由于最开始对linux下面的各种引号并不是特别敏感,导致有一天我在添加数据库字段的时候出现的错误,当时出现错误的原因是我在最外层使用了单引号进行包裹,然后一句话里面需要转意的 ...

  6. CodeGear RAD 2007 SP4 最新下载及破解

    CodeGear RAD 2007 up4最新下载及破解 官方http下载: http://altd.codegear.com/download/radstudio2007/CodeGearRADSt ...

  7. VMWare 安装 Eclipse

    由于之前已经安装了  OpenJDK 所以 这次我们可以直接下载  eclipse来安装. Eclipse 下载:http://www.eclipse.org/downloads/?osType=li ...

  8. java构造函数总结

    构造函数总结 概念:    创建对象时由JVM自动调用的函数 作用:    在创建对象的时候给对象的成员变量赋值: 写法: 修饰符:可以用访问权限修饰符(public.private等)修饰:不能用s ...

  9. IO模型介绍 以及同步异步阻塞非阻塞的区别

      阻塞:用户进程访问数据时,如果未完成IO,等待IO操作完成或者进行系统调用来判断IO是否完成非阻塞:用户进程访问数据时,会马上返回一个状态值,无论是否完成 同步:用户进程发起IO(就绪判断)后,轮 ...

  10. 洛谷UVA12995 Farey Sequence(欧拉函数,线性筛)

    洛谷题目传送门 分数其实就是一个幌子,实际上就是求互质数对的个数(除开一个特例\((1,1)\)).因为保证了\(a<b\),所以我们把要求的东西拆开看,不就是\(\sum_{i=2}^n\ph ...