安装
 
1.安装准备工作:  
下载的sqoop安装包
http://mirrors.hust.edu.cn/apache/sqoop/1.99.6/sqoop-1.99.6.tar.gz
 
2.解压文件到工作目录:  
hadoop@hadoopMaster:$ sudo tar -xvf /opt/hn/hadoop_family/sqoop-1.99.6-bin-hadoop200.tar.gz   
hadoop@hadoopMaster:mv /opt/hn/hadoop_family/sqoop-1.99.6-bin-hadoop200 /usr/local/sqoop  
 
3.修改环境变量:  
hadoop@hadoopMaster:~$ vim /etc/profile  
添加如下内容:  
#sqoop  
export SQOOP_HOME=/usr/local/sqoop  
export PATH=$SQOOP_HOME/bin:$PATH  
export CATALINA_HOME=$SQOOP_HOME/server  
export LOGDIR=$SQOOP_HOME/logs  
保存退出即时生效:  
source /etc/profile  
 
4.修改sqoop配置:  
hadoop@hadoopMaster:~$ vim /usr/local/sqoop/server/conf/sqoop.properties   
#修改指向我的hadoop安装目录  
org.apache.sqoop.submission.engine.mapreduce.configuration.directory=/usr/local/hadoop/  
#把hadoop目录下的jar包都引进来  
hadoop@hadoopMaster:~$ vim /usr/local/sqoop/server/conf/catalina.properties   
common.loader=/usr/local/hadoop/share/hadoop/common/*.jar,/usr/local/hadoop/share/hadoop/common/lib/*.jar,/usr/local/hadoop/share/hadoop/hdfs/*.jar,/usr/local/hadoop/share/hadoop/hdfs/lib/*.jar,/usr/local/hadoop/share/hadoop/mapreduce/*.jar,/usr/local/hadoop/share/hadoop/mapreduce/lib/*.jar,/usr/local/hadoop/share/hadoop/tools/*.jar,/usr/local/hadoop/share/hadoop/tools/lib/*.jar,/usr/local/hadoop/share/hadoop/yarn/*.jar,/usr/local/hadoop/share/hadoop/yarn/lib/*.jar,/usr/local/hadoop/share/hadoop/httpfs/tomcat/lib/*.jar
 
 
5.下载mysql驱动包  
mysql-connector-java-5.1.16-bin.jar  
 
6.启动/停止sqoop200  
hadoop@hadoopMaster:/usr/local/sqoop/bin$ ./sqoop.sh server start/stop  
查看启动日志:  
hadoop@hadoopMaster:/usr/local/sqoop/server/logs$ vim catalina.out   
 
7.进入客户端交互目录  
hadoop@hadoopMaster:/usr/local/sqoop/bin$ ./sqoop.sh client 
 
 
 
 
使用
 
 

1 查看所有数据库:

sqoop list-databases --connect  jdbc:mysql://192.168.1.1:3306/ --username root --password 123456

2 查看具体数据库内的表

sqoop list-tables --connect jdbc:mysql://localhost:3306/kellte --username root --password 123456

3  将关系型数据表结构users复制到Hive默认库的表users中:

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

--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  将mysql表student数据拷贝到hive默认库的student表中:这里使用一个mapreduce来执行

sqoop
import --connect jdbc:mysql://192.168.1.1:3306/kettle --username root
--passwd 123456 --table  student  --hive-import --hive-table student -m
1;

5 根据列导入数据: 将kettle库下student表的name属性 写入到 hive表的student1中

sqoop import --connect jdbc:mysql://192.168.1.1:3306/kettle --username root --password 123456

--table student  --column 'name'  --hive-import --hive-table student1 -m1;

5.1  column和where合用在mysql导出到hive中:

sqoop import --connect jdbc:mysql://192.168.1.1:3306/kettle --username root --password 123456

--table student --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/userinfos2   可以用  --hive-import --hive-table userinfos2 进行替换

5.2 将数据表导入到HDFS中

sqoop import --append --connect $CONNECTURL --username $ORACLENAME --password $ORACLEPASSWORD

--target-dir $hdfsPath --m 1 --table $oralceTableName --columns $columns

--fields-terminated-by '\001' --where "data_desc='2011-02-26'"

6 增量添加数据:

Sqoop提供了原生增量导入的特性,包含以下三个关键参数:
--check-column (col)    指定一个“标志列”用于判断增量导入的数据范围,该列不能是字符型,最好是数字或者日期型(这个很好理解吧)。
--incremental (mode)    指定增量模式,包含“追加模式”  append 和“最后修改模式”  lastmodified (该模式更满足常见需求)。
--last-value (value)    指定“标志列”上次导入的上界。如果“标志列”是最后修改时间,则--last-value为上次执行导入脚本的时间。
 
sqoop支持两种增量MySql导入到hive的模式
一种是 append,即通过指定一个递增的列,比如:
--incremental append  --check-column num_iid --last-value 0
另种是可以根据时间戳,比如:
--incremental lastmodified --check-column created --last-value '2012-02-01 11:0:00'
就是只导入created 比'2012-02-01 11:0:00'更大的数据。

sqoop
job --create incretest -- import --connect
jdbc:oracle:thin:@192.168.0.138:1521:orcl  --username HIVE --password
hivefbi --table FBI_SQOOPTEST --hive-import --hive-table INCRETEST 
--incremental lastmodified --check-column LASTMODIFIED --last-value
'2014/8/27 13:00:00'

 
 
注意
 

导入数据的过程中,如果碰到列值为null的情况,hive中为null的是以\N代替的,所以你在导入到MySql时,需要加上两个参数:--
input-null-string '\\N' --input-null-non-string
'\\N',多加一个'\',是为转义。如果你通过这个还不能解决字段为null的情况,还是报什么NumberFormalt异常的话,那就是比较另类
的了,没有关系,我们还是要办法解决,这就是终极武器。呵呵
 
--direct 只支持mysql 5.0 + 和postgresql 8.3+(只是import)
jdbc的jar包需要放在$SQOOP_HOME/lib目录下

mysql zeroDateTimeBehavior
mysql允许DATE列使用'0000-00-00\' 如果不处理sqoop默认给转换为null
当然你也可以自己指定为 round,自动转换为('0001-01-01\')
$ sqoop import --table foo --connect jdbc:mysql://db.example.com/someDb?zeroDateTimeBehavior=round

mysql UNSIGNED 列
如果是UNSIGNED的,它是介于0 and 2^32 (4294967295)的,但是数据库会告诉sqoop,这是整形
整形的大小是介于-2147483648 and \+2147483647的,超过214748364的,它处理不了。

--direct模式不支持BLOB和CLOB,不支持视图

为了性能,一般的是32MB提交一次,可以通过 -D sqoop.mysql.export.checkpoint.bytes=size来指定
它的单位是bytes,设置为0,就禁用检查点了。

在对生产环境导入数据时,用户也在用,我们通过stage表来解决稳定性的问题,肯定会对生产环境产生影响
我们可以通过设置 -D sqoop.mysql.export.sleep.ms=time 参数(单位毫秒)来让它停止一段时间
每传输sqoop.mysql.export.checkpoint.bytes个字节就休息一段时间

 
oracle部分
sqoop支持 ojdbc6.jar
oracle当中的DATE和TIME,都会当做是TIMESTAMP值,sqoop会当做java.sql.Timestamp来存储
当把数据导回到数据库的时候,sqoop会把它转换为 yyyy-mm-dd HH:MM:SS.ffffffff格式
但是你只希望yyyy-mm-dd格式

时区,默认是GMT
$ sqoop import -D oracle.sessionTimeZone=America/Los_Angeles --connect jdbc:oracle:thin:@//db.example.com/foo --table bar

hive和sql的数据类型匹配
DATE,TIME,TIMESTAMP 会被当做是字符串处置, NUMERIC和DECIMAL会被认为是double
sqoop会提醒你精度丢失了

Microsoft SQL特殊的参数
--schema <name>     Scheme name that sqoop should use. Default is "dbo".
--table-hints <hints>     Table hints that Sqoop should use for data movement.

$ sqoop import ... --table custom_table -- --schema custom_schema
$ sqoop import ... --table custom_table -- --table-hints NOLOCK

PostgreSQL
$ sqoop export (generic-args) --connection-manager org.apache.sqoop.manager.PGBulkloadManager (export-args)
支持参数和例子
Property     Description
mapred.reduce.tasks     map数量
pgbulkload.bin             pg_bulkoad binary安装路径,每一台机器都有
pgbulkload.check.constraints     检查约束,默认是true
pgbulkload.parse.errors             在转义,加密,过滤,检查约束,数据类型转换中产生的错误的最大数,默认是无穷大
pgbulkload.duplicate.errors     数据重复的忍耐值. 重复值在数据库中存储是badfile,默认是无穷大
pgbulkload.filter             转换每一行为输入的数据

Here is a example of complete command line.

$ sqoop export \
    -Dmapred.reduce.tasks=2
    -Dpgbulkload.bin="/usr/local/bin/pg_bulkload" \
    -Dpgbulkload.input.field.delim=$'\t' \
    -Dpgbulkload.check.constraints="YES" \
    -Dpgbulkload.parse.errors="INFINITE" \
    -Dpgbulkload.duplicate.errors="INFINITE" \
    --connect jdbc:postgresql://pgsql.example.net:5432/sqooptest \
    --connection-manager org.apache.sqoop.manager.PGBulkloadManager \
    --table test --username sqooptest --export-dir=/test -m 2

 
 
 
 
 
参数
 
 
import的主要参数:
--connect <jdbc-uri>    jdbc连接地址
--connection-manager <class-name>     连接管理者
--driver <class-name>     驱动类
--hadoop-mapred-home <dir>     $HADOOP_MAPRED_HOME
--password <password>     密码
--username <username>     账号
--verbose    打印信息
--help     help信息
--connection-param-file <filename>  可选参数
 
--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                                     批量模式

转义字符相关参数

--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>     复制结束符
 
 
 
 
 
 
 
 
 
 
 
 

Sqoop 1.99.6 安装和使用的更多相关文章

  1. Sqoop 1.99.4 安装

    1.安装准备工作:已经装好的 hadoop 环境是 hadoop-2.5.1 64位下载的sqoop安装包(注意是hadoop200)http://www.us.apache.org/dist/sqo ...

  2. sqoop 1.99.7 安装及配置

    一  下载sqoop 1.99.7 http://mirror.bit.edu.cn/apache/sqoop/1.99.7/ 二 解压安装文件 三 配置Sqoop 环境变量 最后把mysql的驱动j ...

  3. [sqoop1.99.7] sqoop入门-下载、安装、运行和常用命令

    一.简介 Apache Sqoop is a tool designed for efficiently transferring data betweeen structured, semi-str ...

  4. Hadoop2.2.0环境下Sqoop1.99.3安装

    本文转载自http://blog.csdn.net/liuwenbo0920/article/details/40504045 1.安装准备工作: 已经装好的hadoop环境是hadoop 2.2.0 ...

  5. 安装sqoop 1.99.4

    参考http://sqoop.apache.org/docs/1.99.4/Installation.html 1.简介 sqoop2分为server和client两部分.server作为maprde ...

  6. sqoop1.99.4安装与简介

    1.什么是sqoop clouder公司开发的一个在关系数据库和hdfs,hive之间数据导入导出的一个工具 2.版本及其区别 现在分为sqoop1和sqoop2 1)架构图(sqoop1和hadoo ...

  7. HIVE之 Sqoop 1.4.6 安装、hive与oracle表互导

    1. sqoop数据迁移 1.1 概述 sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具. 导入数据:MySQL,Oracle导入数据到Hadoop的HDFS.HI ...

  8. Sqoop之 Sqoop 1.4.6 安装

    1. sqoop数据迁移 1.1 概述 sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具. 导入数据:MySQL,Oracle导入数据到Hadoop的HDFS.HI ...

  9. Sqoop 1.4.6 安装配置

    配置环境变量 # SQOOP SQOOP_HOME=/home/hadoop/development/src/sqoop-1.4.6-cdh5.6.0 PATH=$PATH:$SQOOP_HOME/b ...

随机推荐

  1. Appium + Python App自动化(2)第一个脚本

    [1]打开你的夜神模拟器(或者连接你的手机) [2]打开桌面的Appium [3]下载你要测的App的apk文件,放到桌面 [4]拖动你的apk安装包到夜神模拟器里,然后模拟器会提示你安装.安装.原来 ...

  2. 【angularJS】Controller控制器

    1. 定义 控制器(Controller)在AngularJS中作用是增强视图(View),AngularJS控制器是一个构造方法,用来向视图(View)中添加额外功能. ng-controller指 ...

  3. 【angularJS】$Scope

    $Scope Scope(作用域)是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带,用来保存AngularJS Model(模型)的对象. Scope 是一个对象,有可用的 ...

  4. Gridview实现突出显示某一单元格的方法

    GridView突出显示某一单元格(例如金额低于多少,分数不及格等) 效果图: 解决方案:主要是绑定后过滤 GridView1.DataBind();        for (int i = 0; i ...

  5. 13 Stream Processing Patterns for building Streaming and Realtime Applications

    原文:https://iwringer.wordpress.com/2015/08/03/patterns-for-streaming-realtime-analytics/ Introduction ...

  6. Linux环境下安装Websphere8.5.5

    首先安装包资源: https://pan.baidu.com/s/1Jvkqe3WMgNQ3bn3ggYGhAQ 下面是Installation Manager安装包 agent.installer. ...

  7. SQL的复习与总结

    检索数据 关键字: SELECT DISTINCT LIMIT OFFSET FROM SELECT与FROM用于基础的检索,基本语法为: SELECT column_name,column_name ...

  8. win7环境下,golang thrift demo代码编译不通过

    用官方的教程代码:http://thrift.apache.org/tutorial/go 用网友提供的代码:Golang RPC 之 Thrift 都出现如下情况 状况1: 编辑器中就会提醒 Can ...

  9. 最近github上的一些有用链接资料备份

    https://github.com/dlunion 这个人写了库里面有caffe简单版本的代码,依赖少的版本,他的caffe可以支持ssd和lstm序列识别等等 还有openPose等库代码 OCR ...

  10. centos如何使用utc时间

    1.将本地时间文件改名,做备份文件为localtime2 mv /etc/localtime /etc/localtime2 2.将UTC文件和本地文件做连接ln -s /usr/share/zone ...