sqoop 常用命令整理(一)

Sqoop详解 Sqoop(SQL-to-Hadoop)款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导出到关系型数据库中。 阅读详情
这些内容是从sqoop的官网整理出来的,是1.4.3版本的Document,如果有错误,希望大家指正。

      1.使用sqoop导入数据

  

  sqoop import --connect jdbc:mysql://localhost/db --username foo --table TEST

  2.账号密码

    sqoop import --connect jdbc:mysql://database.example.com/employees \
    --username aaron --password 12345

  3.驱动

    sqoop import --driver com.microsoft.jdbc.sqlserver.SQLServerDriver \
    --connect <connect-string> ...

   4.写sql语句导入的方式

    sqoop import \
  --query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \
  --split-by a.id --target-dir /user/foo/joinresults

  如果是顺序导入的话,可以只开一个线程

    sqoop import \
  --query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \
  -m 1 --target-dir /user/foo/joinresults

  如果where语句中有要用单引号的,就像这样子写就可以啦"SELECT * FROM x WHERE a='foo' AND \$CONDITIONS"

  5.  1.4.3版本的sqoop不支持复杂的sql语句,不支持or语句

  6. --split-by <column-name>
  默认是主键,假设有100行数据,它会执行那个SELECT * FROM sometable WHERE id >= lo AND id < hi,
  with (lo, hi)  会分为4次导入(0,250),(250,500),(500,750),(750,1001)
  如果这个字段不能达到实际的划分区域的效果,可以用别的字段。如果没有索引列或者是组合主键的表,需要手动设置一个划分列

  7. --direct 是为了利用某些数据库本身提供的快速导入导出数据的工具,比如mysql的mysqldump
  性能比jdbc更好,但是不知大对象的列,使用的时候,那些快速导入的工具的客户端必须的shell脚本的目录下

   8.导入数据到hdfs目录,这个命令会把数据写到/shared/foo/ 目录

    sqoop import --connnect <connect-str> --table foo --warehouse-dir /shared \

  或者

    sqoop import --connnect <connect-str> --table foo --target-dir /dest \

  9.传递参数给快速导入的工具,使用--开头,下面这句命令传递给mysql默认的字符集是latin1

    sqoop import --connect jdbc:mysql://server.foo.com/db --table bar \
    --direct -- --default-character-set=latin1

  10.转换为对象
  --map-column-java <mapping>  转换为java数据类型
  --map-column-hive <mapping>  转转为hive数据类型

  11.增加导入
  --check-column (col)  Specifies the column to be examined when determining which rows to import.
  --incremental (mode)  Specifies how Sqoop determines which rows are new. Legal values for mode include append and lastmodified.
  --last-value (value)  Specifies the maximum value of the check column from the previous import.

  增加导入支持两种模式append和lastmodified,用--incremental来指定

  12.在导入大对象,比如BLOB和CLOB列时需要特殊处理,小于16MB的大对象可以和别的数据一起存储,超过这个值就存储在_lobs的子目录当中

  它们采用的是为大对象做过优化的存储格式,最大能存储2^63字节的数据,我们可以用--inline-lob-limit参数来指定每个lob文件最大的限制是多少

  如果设置为0,则大对象使用外部存储

  13.分隔符、转移字符

  下面的这句话
  Some string, with a comma.
  Another "string with quotes"
  使用这句命令导入$ sqoop import --fields-terminated-by , --escaped-by \\ --enclosed-by '\"' ...
  会有下面这个结果
  "Some string, with a comma.","1","2","3"...
  "Another \"string with quotes\"","4","5","6"...
  使用这句命令导入$ sqoop import --optionally-enclosed-by '\"' (the rest as above)...
  "Some string, with a comma.",1,2,3...
  "Another \"string with quotes\"",4,5,6...

  14.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类型

  15.hive空值处理
  sqoop会自动把NULL转换为null处理,但是hive中默认是把\N来表示null,因为预先处理不会生效的
  我们需要使用 --null-string 和 --null-non-string来处理空值 把\N转为\\N

    sqoop import  ... --null-string '\\N' --null-non-string '\\N'

  16.导入数据到hbase
  导入的时候加上--hbase-table,它就会把内容导入到hbase当中,默认是用主键作为split列
  也可以用--hbase-row-key来指定,列族用--column-family来指定,它不支持--direct。
  如果不想手动建表或者列族,就用--hbase-create-table参数

  17.代码生成参数,没看懂
  --bindir <dir>  Output directory for compiled objects
  --class-name <name>  Sets the generated class name. This overrides --package-name. When combined with --jar-file, sets the input class.
  --jar-file <file>  Disable code generation; use specified jar
  --outdir <dir>  Output directory for generated code
  --package-name <name>  Put auto-generated classes in this package
  --map-column-java <m>  Override default mapping from SQL type to Java type for configured columns.

  18.通过配置文件conf/sqoop-site.xml来配置常用参数

 <property>
    <name>property.name</name>
    <value>property.value</value>
 </property>

  如果不在这里面配置的话,就需要像这样写命令

    sqoop import -D property.name=property.value ...

  19.两个特别的参数 
  sqoop.bigdecimal.format.string  大decimal是否保存为string,如果保存为string就是 0.0000007,否则则为1E7
  sqoop.hbase.add.row.key          是否把作为rowkey的列也加到行数据当中,默认是false的

  20.例子

#指定列
$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \
    --columns "employee_id,first_name,last_name,job_title"
#使用8个线程
$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \
    -m 8
#快速模式
$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \
    --direct
#使用sequencefile作为存储方式
$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \
    --class-name com.foocorp.Employee --as-sequencefile
#分隔符
$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \
    --fields-terminated-by '\t' --lines-terminated-by '\n' \
    --optionally-enclosed-by '\"'
#导入到hive
$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \
    --hive-import
#条件过滤
$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \
    --where "start_date > '2010-01-01'"
#用dept_id作为分个字段
$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \
    --split-by dept_id
#追加导入
$ sqoop import --connect jdbc:mysql://db.foo.com/somedb --table sometable \
    --where "id > 100000" --target-dir /incremental_dataset --append

  21.导入所有的表sqoop-import-all-tables
  每个表都要有主键,不能使用where条件过滤 

    sqoop import-all-tables --connect jdbc:mysql://db.foo.com/corp

  22.export

  我们采用sqoop-export插入数据的时候,如果数据已经存在了,插入会失败
  如果我们使用--update-key,它会认为每个数据都是更新,比如我们使用下面这条语句

   sqoop-export --table foo --update-key id --export-dir /path/to/data --connect …
  UPDATE foo SET msg='this is a test', bar=42 WHERE id=0;
  UPDATE foo SET msg='some more data', bar=100 WHERE id=1;
  ...

  这样即使找不到它也不会报错

  23.如果存在就更新,不存在就插入
  加上这个参数就可以啦--update-mode allowinsert

  24.事务的处理
  它会一次statement插入100条数据,然后每100个statement提交一次,所以一次就会提交10000条数据

  25.例子

$ sqoop export --connect jdbc:mysql://db.example.com/foo --table bar  \
    --export-dir /results/bar_data

$ sqoop export --connect jdbc:mysql://db.example.com/foo --table bar  \
    --export-dir /results/bar_data --validate

$ sqoop export --connect jdbc:mysql://db.example.com/foo --call barproc \
    --export-dir /results/bar_data
Sqoop最佳实践 、什么是Sqoop Sqoop个在结构化数据和Hadoop之间进行批量数据迁移的工具,结构化数据可以是Mysql、Oracle等RDBMS。Sqoop底层用MapReduce程序实现抽取、转换、加载,MapReduce天生的特性保证了并行化和高容错率,而且相比Kettle等传统ETL工具,任务跑在Hadoop集群上,减少了ETL服务器资源的使用情况。在特定场景下,抽取过程会有很大的性能提升... 阅读详情

相关推荐

Sqoop常用命令及参数

常用命令列举 ​ 这里给大家列出来了部分Sqoop操作时的常用参数,以供参考,需要深入学习的可以参看对应类的源代码。 序号 命令 类 说明 1 import ImportTool 将数据导入到集群 2 export ExportTool 将集群数据导出 3 codegen CodeGenTool 获取数据库中某张表数据生成Java并打包Jar 4 create-hiv...

JiangDongS的博客 685

Sqoop学习

dSqoop简介二、Sqoop原理三、Sqoop安装3.1 下载并解压1)[最新版下载地址](http://mirrors.hust.edu.cn/apache/sqoop/)2)上传安装包sqoop-1.4.7.bin_hadoop-2.6.0.tar.gz到虚拟机中,如我的上传目录是:3)解压sqoop安装包到指定目录,如:3.2 修改配置文件1)重命名配置文件2)修改配置文件3.3 拷贝...

qq_34955491的博客 1469

在Windows 2003利用IIS 6.0搭建ASP+SqlServer网站环境

、前言:在某些情况下,我们学习上可能需要搭建网站并且还原数据库,这些过程是简单但是又是繁琐的,现在我也闲的无聊就给大家展示如何搭建在Windows的IIS 6.0搭建ASP+SqlServer漏洞环境。 二、环境准备:我们需要下载好以下的软件(下载地址附上) 下载Windows2003地址:http://www.downza.cn/soft/182837.html 下载SQLEXPR_CHS.e...

Hungchuiho的博客 5521

服务器上配置ASP.NET2.0网站全攻略(windows2003+sql2005)

本文所讲是我在台服务器上实际配置网站的情况,不是理论,我仅保证我手里的网站可以这样配置成功,有些地方绕弯或者山寨了还请指教。 1、检查系统是否安装了IIS和SQL20052、还原数据库:此次我遇到的主要问题就出在账户上,因为我还原了数据后发现它的用户名属性为不用登录名,网站总是链接不成功,所以我重新建立账户。首先新建个你要还原的数据库,名称不变;右键单击新建的数据库,选

王立春 4254

【ASP.NET】发布网站上线具体流程

目录 软件:VS2017、SQL SERVER 2008 目标:纯用IP地址访问 ASP.NET网站,服务器自己装SQL SERVER 2008 ,成功远程连接数据库,成功访问网站。 1、上网找 某云 买个云服务器,买后会得到个公网IP。 2、远程连接服务器,安装IIS服务和安装FTP服务 (若链接已失效,百度找"window server 2008 安装xxx服务 即可) 2.1 注...

两水先木示的博客 3109

构建基于ASP.NET与SQLServer的音乐网站:设计与实现大全

本文还有配套的精品资源,点击获取 简介:音乐网站作为现代互联网用户享受音乐的主要方式,需要稳定高效的技术支撑。本项目深入探讨了使用ASP.NET和SQLServer构建音乐网站的各个方面,包括ASP.NET的基础架构、数据库设计、数据访问技术、用户认证授权、页面交互、RESTful API设计、安全性考量及性能优化。通过本项目,开发者可以全面学习Web开发和数据库管理的核心...

weixin_42515392的博客 957

免费的ASP.NET空间和SQLServer2008 Express

Login Register Web Hosting Support Forum Ask Experts Articles ASP.NET 4.5 & SQL 2012 Hosting Premium Hosting|Shared Hosting...

aihl70849的博客 411

基于Asp.net的购物网站系统

随着电子商务的快速发展,购物网站已经成为人们日常生活中不可或缺的部分。为了满足市场需求,我们决定开发个基于Asp.net的购物网站系统。该系统将提供丰富的商品信息、便捷的购物体验和高效的后端管理功能。

毕业设计大牛哥 2318

收藏的些ASP.net 2.0资料

asp.net控件开发基础(1) GridView模版列嵌套GirdView显示主从表数据 GridView中添加个CheckBox列 域环境中安装部署VSTS全过程 设置VSS使支持通过Internet访问 浅析Microsoft .net PetShop程序中的购物车和订单处理模块(Profile技术,异步MSMQ消息)

Aone --- 无限的未知 7948

ASP.NET 2.0 中 Web 事件

web.config:                                            简介loadTOCNode(1, summary);欢迎使用 ASP.NET 支持语音列 ! 我名称是 Jerry Orman。 我已经与 Microsoft 在 5 年, 并已经花费大量侧重于 Web 相关技术如 FrontPage 和新 SharePoint 技

路在何方 3095

ASP.NET——网站配置、发布与部署

网站发布的基本步骤 使用工具:Visual Studio2017、Sql Server 2014、Win10 写好的项目——在本机上发布 1.首先右键点击项目,选择生成网站 等待控制台显示生成成功 2.点击发布web应用 3.发布方法–>文件系统 选择指定的位置 点击发布 4.打开目录查看是否存在项目文件 部署网站 1.安装IIs 打开控制面板→程序和功能→启用或关闭Windo...

WGL的博客 1074

asp.net SessionState的sqlserver模式的配置及使用

1.由于项目dll文件变动比较频繁,而保存登陆的状态又保存在Session中,所以导致用户经常无故掉线。(dll变动的时候导致Session丢失) 2.有种方法可以长期保存session,那就是session的SqlServer模式。还是先介绍下session的四种模式吧:   ASP.NET会话状态模块在Web.config文件中标记下的标记的mode属性来决定该属性的四种可能的值:

aiouwen521的专栏 1万+

4个免费的ASP.NET托管网站

Here you will know about some best and free asp.net hosting websites. 在这里,您将了解些最佳和免费的asp.net托管网站。 Are you a student or developer? Do you have ASP.NET website? Want to test your ASP.NET project onli...

culing2941的博客 2485

asp.net 2.0 所谓的吐血收藏

 asp.net控件开发基础(1) GridView模版列嵌套GirdView显示主从表数据 GridView中添加个CheckBox列 域环境中安装部署VSTS全过程 设置VSS使支持通过Internet访问 浅析Microsoft .net PetShop程序中的购物车和订单处理模块(Profile技术,异步MSMQ消息)

1707

asp.net98博客网站(sqlserver)

博客是种正处于快速发展和快速演变的互联网应用,也是种表达个人思想,内容按照时间顺序排列,并且不断更新的出版方式。Pvra创始人EvanWilliams认为博客概念主要体现在三个方面:频繁更新(Frequency)、简洁明了(Brevity)和个性化(Personality)。可见,博客是种新的信息共享形式,主要针对个人信息共享而发展起来的种当今较为流行的沟通方式。简易博客网站正是种用于个人信息发布与交流的专业网站,提供最基本的交流功能和个性化设计。

weixin_41792788的博客 1085

ASP.NET旅游网站管理系统与SQLServer数据库应用实例

ASP.NET是微软开发的个用于构建动态Web应用程序的框架。它是.NET框架的部分,使用C#作为主要开发语言,提供了种简化的方式来开发Web表单和Web服务。ASP.NET框架支持基于模型-视图-控制器(MVC)的设计模式,使开发者能够以更模块化的方式组织代码和资源。ASP.NET的这些特性使其成为构建复杂Web应用程序的理想选择。下面是个简单的C#类定义示例:// 属性set;set;// 方法// 构造函数。

weixin_42668301的博客 596

mysql与mssql_MYSQL与MSSQL的区别及优劣比较?

MySQL可以说是MSSQL的简化版本。理念相同,但MySQL的实现比MSSQL的需求低。MySQL是个免费的、开放源代码的SQL数据库,所以免费的MYSQL很受欢迎,php+mysql,MySQL数据库专用于PHP网站的,般用在PHP的网页上的,他和PHP可以说是黄金搭档(都是开源免费的东西)。对于不是特别大流量的网站,特别胜任,效率最高,MYSQL适合小、中型网站。mysql 是个开源的数...

weixin_31354669的博客 7264
上一篇: sqoop export 数据覆盖更新
下一篇: AttemptID:attempt_1527588965479_0001_m_000000_0 Timed out after 600 secs
雨轩_wscrf
博客等级 码龄11年 41粉丝 165原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值