sqoop

北京尚学堂旗下-云数学院 北京尚学堂旗下-云数学院     2022-09-16     509

关键词:

版权声明:本文为yunshuxueyuan原创文章。
如需转载请标明出处: http://www.cnblogs.com/sxt-zkys/
QQ技术交流群:299142667

sqoop

Apache Sqoop是用来实现结构型数据(如关系数据库)和Hadoop之间进行数据迁移的工具。它充分利用了MapReduce的并行特点以批处理的方式加快数据的传输,同时也借助MapReduce实现了容错。

sqoop支持的数据库:

Database

version

--direct support?

connect string matches

HSQLDB

1.8.0+

No

jdbc:hsqldb:*//

MySQL

5.0+

Yes

jdbc:mysql://

Oracle

10.2.0+

No

jdbc:oracle:*//

PostgreSQL

8.3+

Yes (import only)

jdbc:postgresql:/

通过sqoop help命令查看sqoop帮助

import(将关系数据库迁移到HDFS上)

[例1]  将mysql中的sds表导入HDFS中

sqoop import

--connectjdbc:mysql://node01/test

--username root -password passwd

--table sds

[例2]  将mysql中的sds,指定的列表导入HDFS中

sqoop import

--connect jdbc:mysql://node01/test

--username root -password 123

--table sds

--columns "SD_ID,CD_ID,LOCATION"

 [例3] 将整个数据库中的表全部导入到hdfs上

import-all-tables命令

sqoop import-all-tables

--connect jdbc:mysql://node01/test

--username root -password 123

  

[例4] 指定导出文件为SequenceFiles,文件命名为com.ctrip.sds

sqoop import

--connect jdbc:mysql://node01/test

--username root -password 123

--table psn

--class-name com.ctrip.psn --as-sequencefile

  

[例5] 导入文本时可以指定分隔符

sqoop import

--connect jdbc:mysql://node01/test

--username root -password 123

--table psn

--fields-terminated-by '\t'

--lines-terminated-by '\n'

--optionally-enclosed-by '\"'

  

 [例6] 可以指定过滤条件

sqoop import

--connect jdbc:mysql://node01/test

--username root -password passwd

--table sds

--where "sd_id > 100"

  

--m设置并行数据,即map的数据,决定文件的个数。

--target-dir设置hdfs上的目标目录。

export(将hdfs上的数据导入到关系数据库中)

[例一]  将HDFS中数据导入到mysql中的sds表

sqoop export

--connect jdbc:mysql://node01/test

--username root -password 123 

--table psn 

--export-dir /user/root/psn

mysql数据库的sds表需要先把表结构创建出来,否则export操作会直接失败。

[例二]  将关系数据库表导入到hive表中

create-hive-table 

sqoop create-hive-table

--connect jdbc:mysql://node01/test

--username root --password 123

--table psn

--hive-table sds_bak

  

默认sds_bak是在default数据库的。

这一步需要依赖HCatalog,需要先安装HCatalog,否则报错。

list-databases列出一台server上可用的数据库

sqoop list-databases

--connect jdbc:mysql://node01/

--username root -password 123

  

list-tables列出一个数据库中的表

sqoop list-tables

--connect jdbc:mysql://node01/test

--username root -password 123

  

codegen:

将关系数据库表映射为一个java文件、java class类相关的jar包

sqoop codegen

--connect jdbc:mysql://node01/test

--username root -password 123

--table psn

  

eval用户可以很快的使用sql语句对数据库进行操作。

sqoop eval

--connect jdbc:mysql://node01/test 

--username root -password 123 

--query "SELECT * FROM psn LIMIT 10"

  

job用来生成sqoop任务。

sqoop job

--create myjob

-- import

--connect jdbc:mysql://node01/test

 --username root -password 123 

--table psn -m 1

  

sqoop job -exec myjob

  

metastore 配置sqoop job的共享元数据信息,这样多个用户定义和执行sqoop job在这一metastore中。

启动:sqoop metastore

关闭:sqoop metastore –shutdown

存储位置: conf/sqoop-site.xml/sqoop.metastore.server.location

 

[补充]

由于sqoop是通过map完成数据的导入,各个map过程是独立的,没有事物的概念,可能会有部分map数据导入失败的情况。为了解决这一问题,sqoop中有一个折中的办法,即是指定中间staging表,成功后再由中间表导入到结果表。

--staging-table <staging-table-name>staging表结构也是需要提前创建出来

sqoop export

--connect jdbc:mysql://192.168.81.176/sqoop

--username root -password passwd

--table sds

--export-dir /user/guojian/sds

--staging-table sds_tmp

  

[注]在使用 –direct,--update-key或者--call存储过程的选项时,staging中间表是不可用的。

验证结果:

(1)数据会首先写到sds_tmp表,导入操作成功后,再由sds_tmp表导入到sds结果表中,同时会清除sds_tmp表。

(2)如果有map失败,则成功的map会将数据写入tmp表,export任务失败,同时tmp表的数据会被保留。

(3)如果tmp中已有数据,则此export操作会直接失败,

--clear-staging-table 指定在执行前清除中间表。

版权声明:本文为yunshuxueyuan原创文章。
如需转载请标明出处: http://www.cnblogs.com/sxt-zkys/
QQ技术交流群:299142667

[sqoop]sqoop命令

 官网文档:http://sqoop.apache.org/docs/1.99.7/user/CommandLineClient.html#delete-link-function 一、了解sqoop数据导入的几个重要概念(1)connector:sqoop2中预定了各种链接,这些链接是一些配置模板。#查看预定制的连接器sqoop:000>showconnec... 查看详情

[sqoop]sqoop使用

Sqoop的本质还是一个命令行工具,和HDFS,MapReduce相比,并没有什么高深的理论。我们可以通过sqoophelp命令来查看sqoop的命令选项,如下:16/11/1320:10:17INFOsqoop.Sqoop:RunningSqoopversion:1.4.6usage:sqoopCOMMAND[ARGS]Availablecommands: codegen & 查看详情

sqoop介绍

Sqoop介绍http://sqoop.apache.orghttp://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html 1.什么是Sqoop?将关系数据库(oracle,mysql,postgresql)数据与hadoop数据进行转换的工具2.Sqoop架构?sqoop架构非常简单,是hadoop生态系统最简单的框架sqoop1由clie 查看详情

如何从 Sqoop 选项生成 Sqoop 命令?

】如何从Sqoop选项生成Sqoop命令?【英文标题】:HowtogenerateSqoopcommandfromSqoopoptions?【发布时间】:2017-04-2012:21:01【问题描述】:我想生成Sqoop命令以从Mysql导入RDBMS表。我将sqoop命令存储在数据库中,然后使用此命令创建Oozie工作流... 查看详情

[sqoop]sqoop小试牛刀

 sqoop1.4.6 小试牛刀 sqoopimport参数 1.mysql导入到hdfs中./sqoopimport--connectjdbc:mysql://mysql:3306/part--usernameroot--password123456--tablebig_hdfs-m1--target-dir/sqoop/import/mysql/&nbs 查看详情

sqoop(代码片段)

sqoop1Sqoop简介2Sqoop原理3Sqoop安装3.1下载并解压3.2修改配置文件3.3拷贝JDBC驱动3.4验证Sqoop3.5测试Sqoop是否能够成功连接数据库4Sqoop的简单使用案例4.1导入数据4.1.1RDBMS到HDFS4.1.2RDBMS到Hive4.1.3RDBMS到Hbase4.2、导出数据4.2.1HIVE/HDFS到RDBMS4.3脚... 查看详情

sqoop(代码片段)

sqoop1Sqoop简介2Sqoop原理3Sqoop安装3.1下载并解压3.2修改配置文件3.3拷贝JDBC驱动3.4验证Sqoop3.5测试Sqoop是否能够成功连接数据库4Sqoop的简单使用案例4.1导入数据4.1.1RDBMS到HDFS4.1.2RDBMS到Hive4.1.3RDBMS到Hbase4.2、导出数据4.2.1HIVE/HDFS到RDBMS4.3脚... 查看详情

sqoop(代码片段)

sqoop1Sqoop简介2Sqoop原理3Sqoop安装3.1下载并解压3.2修改配置文件3.3拷贝JDBC驱动3.4验证Sqoop3.5测试Sqoop是否能够成功连接数据库4Sqoop的简单使用案例4.1导入数据4.1.1RDBMS到HDFS4.1.2RDBMS到Hive4.1.3RDBMS到Hbase4.2、导出数据4.2.1HIVE/HDFS到RDBMS4.3脚... 查看详情

sqoop1与sqoop2

Sqoop(sqoop.apache.org)工具是hadoop环境下连接关系数据库,和hadoop存储系统的桥梁,支持多种关系数据源和hive,hdfs,hbase的相互导入。一般情况下,关系数据表存在于线上环境的备份环境,需要每天进行数据导入,根据每天的数据量... 查看详情

sqoop入门教程

目录一、Sqoop概述    1、简介    2、Sqoop架构原理    3、Sqoop连接器二、Sqoop安装    1、sqoop下载解压    2、sqoop配置文件  & 查看详情

sqoop2安装

下载http://www-us.apache.org/dist/sqoop/ 打开以上链接,开始下载sqoop2   下载后得到:sqoop-1.99.7-bin-hadoop200.tar.gz文件其中sqoop1和sqoop2区别可以参考以下链接 重拾初心——Sqoop1和Sqoop2的刨析对比 http://blog.csdn.ne 查看详情

安装sqoop,给bin/sqoop-list-databases: line 26: /Users/apple/sqoop: 是一个目录

】安装sqoop,给bin/sqoop-list-databases:line26:/Users/apple/sqoop:是一个目录【英文标题】:Installingsqoop,givebin/sqoop-list-databases:line26:/Users/apple/sqoop:isadirectory【发布时间】:2015-09-1510:15:30【问题描述】:当我安装sqoop时,它给了我这个错误。... 查看详情

sqoop快速上手(代码片段)

ETL系列之Sqoop==楼兰==文章目录一、ETL简介1、关于ETL2、大数据与传统关系型数据库的关系3、Sqoop简介二、Sqoop下载三、Sqoop基础使用3.1前置软件3.2Sqoop安装3.3Sqoop基础使用1、查看Sqoop的帮助信息2、单独连接数据库3、导... 查看详情

sqoop新品来了

Sqoop尽管稳定的应用于生产环境很多年,但是它自身存在的一些缺陷给实际操作带来了不便。Sqoop2便成为了研究使用的对象,那么Sqoop2有什么优势呢?首先我们先来了解一下Sqoop的使用情况,使用Sqoop数据不会出现丢失,而且Sqoop... 查看详情

sqoop1和sqoop2导入导出(代码片段)

sqoop11、使用Sqoop导入MySQL数据到HDFS[[email protected]~]#sqoopimport--connectjdbc:mysql://localhost:3306/test--usernameroot--passwordroot--tableuser--columns‘uid,uname‘-m1-target-dir‘/sqoop/user‘;//-m指定 查看详情

sqoop导出笔记

Sqoop导出笔记发表:2016-10-14 浏览:755 Sqoop 导出Sqoop导出笔记1、通用参数2、导出控制参数3、全表导出4、更新导出注:若需转载,请注明出处!Sqoop导出视频请参考:https://edu.hellobi.com/course/93/lessons  (Sqoop导出实... 查看详情

Sqoop 导入映射器失败,但 sqoop 作业显示正在运行

】Sqoop导入映射器失败,但sqoop作业显示正在运行【英文标题】:Sqoopimportmappersfailedbutsqoopjobisshowingrunning【发布时间】:2019-03-2520:07:42【问题描述】:我编写了一个Sqoop导入程序,使用where子句从Netezza导入数据,当where子句出现语... 查看详情

sqoop--安装配置

一,环境CentOS7.3sqoop-1.4.4hive-2.2.0二,安装与配置1.准备sqoop安装包,官网地址:http://sqoop.apache.org2.配置jdk环境变量和Hadoop的环境变量。因为sqoop在使用是会去找环境变量对应的路径,从而完整工作。3.sqoop解压即可使用(前提是环... 查看详情